【发布时间】:2014-10-31 14:28:21
【问题描述】:
我知道这段代码的效率不是最优的(尤其是有巨大的输入),而且我知道有一种方法可以改变这个算法来处理其他数据类型,而不仅仅是字符串中的重复(显然有只有这么多字符可供搜索)。
有什么办法可以提高效率吗?
我尝试使用字典,但函数一直返回“无”,所以我尝试了一个列表,结果很好。
提前感谢任何可以帮助我的人!
def find_repeater(string):
my_list = []
my_list.append(string[0])
for i in range (1, len(string)):
if string[i] in my_list:
print 'repetition found'
return (string[i])
else:
my_list.append(string[i])
print find_repeater('abca')
现在有了字典....(它一直在控制台打印“无”)
def find_repeater(string):
my_dict = {}
my_dict[0] = string[0]
for i in range (1, len(string)):
if string[i] in my_dict:
print 'repetition found'
return string[i]
else:
my_dict[i] = string[i]
print find_repeater('abca')
【问题讨论】:
-
使用字典是要走的路。展示您的尝试,我们会帮助您解决问题。
-
如果有多个重复的字母怎么办?
-
@PadraicCunningham:看起来 OP 想要返回首先重复的字母
-
可以先对输入进行排序吗?
-
如果您有工作代码,但效率不够,代码审查可能是一门很好的课程(目前还不是)。但无论如何,请考虑使用适当的标题来描述您需要帮助的问题,而不仅仅是呼救。尽管您只希望在正确的方向上稍微戳一下而不是整个解决方案,但值得称赞。
标签: python string performance