V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
julyedu
V2EX  ›  推广

[面试题分析] 输入一个字符串返回满足以下条件的字符串 找出与字符串的第一个字母相同的字母,把它们替换成 '*',除了第一个字母本身以外 例如: 输入'babble', 返回 'ba**le'

  •  
  •   julyedu · 2020-05-14 15:16:06 +08:00 · 2789 次点击
    这是一个创建于 1683 天前的主题,其中的信息可能已经有所发展或是发生改变。

    有兴趣的兄弟们可以谈论下,晚上我来公布答案哈

    第 1 条附言  ·  2020-05-15 11:06:46 +08:00
    我来公布下答案哈:

    解析:

    s=input('input:')

    for i in range(1,len(s)):
    print(i)
    if s[0]==s[i]:
    s=s[:i]+'*'+s[i+1:]
    print(s)
    41 条回复    2020-05-15 11:13:53 +08:00
    ytll21
        1
    ytll21  
       2020-05-14 15:25:36 +08:00
    好难,加个板凳
    kuanng
        2
    kuanng  
       2020-05-14 15:26:31 +08:00
    是我想的太简单了吗
    cherbim
        3
    cherbim  
       2020-05-14 15:28:15 +08:00
    楼上+1,你是不是没说清楚,
    jmc891205
        4
    jmc891205  
       2020-05-14 15:29:03 +08:00
    扫一遍不就有结果了?
    24bit
        5
    24bit  
       2020-05-14 15:29:21 +08:00
    +1
    Oceanhime
        6
    Oceanhime  
       2020-05-14 15:32:46 +08:00
    +1, 兴致勃勃地进来, 一脸懵逼的出去... 这个是有什么特殊算法吗
    GrayXu
        7
    GrayXu  
       2020-05-14 15:34:08 +08:00   ❤️ 2
    太难了,只能 O(n)实现
    sayitagain
        8
    sayitagain  
       2020-05-14 15:34:53 +08:00
    +1,难道是限定代码不准超过几个英文字母?[手动狗头]
    klesh
        9
    klesh  
       2020-05-14 15:36:51 +08:00 via Android
    考点是位操作?
    chanchancl
        10
    chanchancl  
       2020-05-14 15:42:02 +08:00
    ???
    老实人来了
    Python.
    str = str[0] + str.replace(str[0], '*')[1:]
    kera0a
        11
    kera0a  
       2020-05-14 15:45:34 +08:00 via iPhone
    小学生编程大赛第一题?
    cherbim
        12
    cherbim  
       2020-05-14 15:46:26 +08:00
    大兄弟,快出来解释一下,这到底要考啥????
    强迫症患者表示伤不起
    Curtion
        13
    Curtion  
       2020-05-14 15:49:58 +08:00
    ? 有什么特殊要求吗
    IGJacklove
        14
    IGJacklove  
       2020-05-14 15:52:02 +08:00
    哈哈,你们吓到楼主了
    xxxy
        15
    xxxy  
       2020-05-14 15:55:01 +08:00
    老师说,要看到字符串,就想到递归
    charlieputon
        16
    charlieputon  
       2020-05-14 15:55:22 +08:00 via iPhone
    你们觉得帖子奇怪的,不看 lz 历史记录的吗?捕鱼达人资深玩家了,还被 Livid 处理过...你们还回复的一头是劲=。=lll
    daozhihun
        17
    daozhihun  
       2020-05-14 15:55:35 +08:00
    没明白,除了 o(N)的扫描一次还有什么别的办法吗?晚上来看看答案
    noble4cc
        18
    noble4cc  
       2020-05-14 15:55:50 +08:00
    广告都打到这了🤦‍♂️
    namelosw
        19
    namelosw  
       2020-05-14 15:57:24 +08:00
    感觉头像和发帖都很可疑……
    Vegetable
        20
    Vegetable  
       2020-05-14 15:57:25 +08:00
    In [2]: def r(s):
    ...: return s[0]+s[1:].replace(s[0],'*')
    ...:

    In [3]: a = 'babble'

    In [4]: r(a)
    Out[4]: 'ba**le'
    Vegetable
        21
    Vegetable  
       2020-05-14 15:58:09 +08:00
    哪个公司出这种面试题?小学生编程大赛?
    Hstar
        22
    Hstar  
       2020-05-14 15:58:38 +08:00   ❤️ 2
    拭目以待一个 O(logN)的算法
    xiaolinjia
        23
    xiaolinjia  
       2020-05-14 16:01:21 +08:00
    from collections import Counter


    def f1(c: str):
    ....a = Counter(c)
    ....for member in c:
    ........if a.get(member) != 1:
    ............b = c[::-1]
    ............b = b.replace(member, '*', a.get(member) - 1)
    ....return b[::-1]


    if __name__ == '__main__':
    ....print(f1('babble'))

    这样?
    est
        24
    est  
       2020-05-14 16:08:53 +08:00
    julyedu 是个教育培训机构。
    SingeeKing
        25
    SingeeKing  
       2020-05-14 16:09:47 +08:00
    在线蹲一个 O(logN) 的算法
    aijam
        26
    aijam  
       2020-05-14 16:10:13 +08:00
    >>> s = 'babble'
    >>> re.sub('(?<!^)' + s[0], '*', s)
    'ba**le'
    guolaopi
        27
    guolaopi  
       2020-05-14 16:12:16 +08:00
    if(str=='babble'){
    return 'ba**le'
    }
    crella
        28
    crella  
       2020-05-14 16:13:08 +08:00 via Android
    有意思的是,昨天我在知乎上看到一个贴讲 python 的不为人知的缺点,高赞答案就是与这个楼主同名的 id 发的
    newtype0092
        29
    newtype0092  
       2020-05-14 16:40:58 +08:00
    @Hstar 印象中好像没有对无序数据集的 logN 算法?
    cloudfox
        30
    cloudfox  
       2020-05-14 17:48:27 +08:00
    纯正则算法
    str = str.replace("(?<=^(.).*)\1", "*")
    more1sec
        31
    more1sec  
       2020-05-14 17:52:25 +08:00
    lambda x: x[0] + x[1:].replace(x[0], '*')
    。。。
    dswyzx
        32
    dswyzx  
       2020-05-14 17:59:56 +08:00
    if(input=="'babble") return "ba**le"
    else return "try again"
    O(1)
    guyeu
        33
    guyeu  
       2020-05-14 18:10:22 +08:00   ❤️ 1
    我有一个绝妙的 O(1)算法,可惜地方太小写不下。
    4ier
        34
    4ier  
       2020-05-14 19:30:01 +08:00 via Android
    @guyeu 难道是枚举不下
    lichdkimba
        35
    lichdkimba  
       2020-05-15 05:54:31 +08:00 via iPhone
    捕鱼达人
    pompeii
        36
    pompeii  
       2020-05-15 09:30:32 +08:00
    @livid 这算不算恶心人的营销
    Livid
        37
    Livid  
    MOD
       2020-05-15 09:58:08 +08:00
    @pompeii 这种营销方式看起来是挺尴尬的。
    julyedu
        38
    julyedu  
    OP
       2020-05-15 11:09:21 +08:00
    解析:

    s=input('input:')

    for i in range(1,len(s)):
    print(i)
    if s[0]==s[i]:
    s=s[:i]+'*'+s[i+1:]
    print(s)
    julyedu
        39
    julyedu  
    OP
       2020-05-15 11:12:02 +08:00
    给大家公布下答案哈:

    解析:

    s=input('input:')

    for i in range(1,len(s)):
    print(i)
    if s[0]==s[i]:
    s=s[:i]+'*'+s[i+1:]
    print(s)

    @24bit @4ier @Curtion @GrayXu @Hstar @IGJacklove @Livid @Oceanhime @SingeeKing @Vegetable
    julyedu
        40
    julyedu  
    OP
       2020-05-15 11:12:39 +08:00
    @pompeii 哎,只是发了道面试题
    julyedu
        41
    julyedu  
    OP
       2020-05-15 11:13:53 +08:00
    @Vegetable 这是高手,双手点赞
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1299 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 17:15 · PVG 01:15 · LAX 09:15 · JFK 12:15
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.