“天文数字”。我想在范围[1,3]中找到字符“o”的出现次数。因此,在这种情况下,答案将是1.然而,我的方法具有复杂性O(N^2)。我的方法的问题是复制数组需要O(N)时间。因此,我正在寻找另一种更有效率的方式。空间复杂度对我无关紧要。因为我正在学习字符串处理算法,所以如果我能够自己实现这个算法会更好。如何在字符串的特定范围内高效地计算给定字符的出现次数?给定一个未分类的字符串,例如:
任何帮助,将不胜感激。
我的方法。
tmp = [0] * 26 # 26 alphabet
occurrences_table = []
tmp[ord(a_string[0])] += 1
occurrences_table.append(tmp)
for i in range(1, len(a_string)):
temp = occurrences_table[i - 1]
temp[ord(a_string[i])] += 1
occurrences_table.append(temp)
检查[集合。计数器(https://docs.python.org/2/library/collections.html#collections.Counter)。您可以使用[切片](https://docs.python.org/2.3/whatsnew/section-slices.html)来处理特定范围的字符串。 – umutto
@umutto。但这就像我正在学习一些字符串处理算法。所以我想自己实现这个算法。 –
@kevinnnluo - 你真的应该在你原来的问题中提到这种限制。 –