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

2020-05-14 15:16:06 +08:00
 julyedu

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

2590 次点击
所在节点    推广
41 条回复
Vegetable
2020-05-14 15:58:09 +08:00
哪个公司出这种面试题?小学生编程大赛?
Hstar
2020-05-14 15:58:38 +08:00
拭目以待一个 O(logN)的算法
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
2020-05-14 16:08:53 +08:00
julyedu 是个教育培训机构。
SingeeKing
2020-05-14 16:09:47 +08:00
在线蹲一个 O(logN) 的算法
aijam
2020-05-14 16:10:13 +08:00
>>> s = 'babble'
>>> re.sub('(?<!^)' + s[0], '*', s)
'ba**le'
guolaopi
2020-05-14 16:12:16 +08:00
if(str=='babble'){
return 'ba**le'
}
crella
2020-05-14 16:13:08 +08:00
有意思的是,昨天我在知乎上看到一个贴讲 python 的不为人知的缺点,高赞答案就是与这个楼主同名的 id 发的
newtype0092
2020-05-14 16:40:58 +08:00
@Hstar 印象中好像没有对无序数据集的 logN 算法?
cloudfox
2020-05-14 17:48:27 +08:00
纯正则算法
str = str.replace("(?<=^(.).*)\1", "*")
more1sec
2020-05-14 17:52:25 +08:00
lambda x: x[0] + x[1:].replace(x[0], '*')
。。。
dswyzx
2020-05-14 17:59:56 +08:00
if(input=="'babble") return "ba**le"
else return "try again"
O(1)
guyeu
2020-05-14 18:10:22 +08:00
我有一个绝妙的 O(1)算法,可惜地方太小写不下。
4ier
2020-05-14 19:30:01 +08:00
@guyeu 难道是枚举不下
lichdkimba
2020-05-15 05:54:31 +08:00
捕鱼达人
pompeii
2020-05-15 09:30:32 +08:00
@livid 这算不算恶心人的营销
Livid
2020-05-15 09:58:08 +08:00
@pompeii 这种营销方式看起来是挺尴尬的。
julyedu
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
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
2020-05-15 11:12:39 +08:00
@pompeii 哎,只是发了道面试题

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/671633

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX