查找字符串中每个字符出现的次数的复杂性

时间:2018-07-13 07:24:33

标签: python time-complexity

input_string = "foobaarfoooobaaaarfo"
count_dict = {}
for char in input_string:
    try:
        count_dict[char]=count_dict[char]+1
    except:
        count_dict[char]=1
print(count_dict)

对于给定的问题陈述,这是复杂度为O(N)的最佳算法

2 个答案:

答案 0 :(得分:2)

是的,O(n)是您可以做的最好的事情。

有必要拜访每个角色以数一数。

但是,在python实现方面,您可以使用专门的集合Counter获得更好的性能和更易读的代码:

from collections import Counter
input_string = "foobaarfoooobaaaarfo"
counter = Counter(input_string)
print(counter)

答案 1 :(得分:2)

我同意O(N)是您所能做的最好的事情。

我为您的程序做了简化。您不必在此处使用try和引发异常。

input_string = "foobaarfoooobaaaarfo"
count_dict = {}
for char in input_string:
    count_dict[char] = count_dict.get(char, 0) + 1
print(count_dict)