【发布时间】:2018-06-12 20:43:38
【问题描述】:
第一个代码是:
string = "DBCABA"
#computing the first recurring alphabet
def compute_reccuring():
for a in string:
var = string.count(a)
if var > 1:
final = str(a)
print(str(final) + " is repeated first")
break
第二个代码是:
def recurring():
counts = {}
for a in string:
if a in counts:
print(a)
else:
counts[a] = 1
这两种代码都可以,但我不知道哪一种的性能更好。
【问题讨论】:
-
创建一个足够大的字符串并尝试测试性能。
-
string.count是一个隐式循环。此外,在第二个示例中,if a in counts..可能应该在外部/之前终止。 -
所以在我看来第一个是
O(n^2)(对于每个a in string,你在.count(a)中再次遍历整个字符串),而第二个是O(n),因为你'正在使用dict(counts),它的访问时间恒定为O(1)所以,只需查看代码,我会说第二个“更好” 但是,在第二个中你需要在内存中保留dict,这样可能会占用更多内存...取决于您认为更好...更快?内存少?