[面试题分析] 输入一个字符串返回满足以下条件的字符串 找出与字符串的第一个字母相同的字母,把它们替换成 '*',除了第一个字母本身以外 例如: 输入'babble', 返回 'ba**le' - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
julyedu
V2EX    推广

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

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

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

    第 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
    < href="/member/xxxy" class="dark">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  
    PRO
       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
    PRO
       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     Solana     987 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 29ms UTC 23:09 PVG 07:09 LAX 16:09 JFK 19:09
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86