「天文數字」。我想在範圍[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 - 你真的應該在你原來的問題中提到這種限制。 –