我所做的是做一個嵌套循環,達到O(n^2)
時間。我的問題是,如果有更好的解決方案可以減少時間複雜性?確定字符串中是否有字符出現在K次
0
A
回答
2
是的,這可以在O(n)
完成。你只需要散列所有字符(甚至可以是數組)。當你迭代你的字符串時,你增加你找到的字符的數量。
然後在最後迭代你的散列並輸出所有的鍵值,它們的值等於k
。
和Python中的快速幾行
def func(s, k):
from collections import Counter
h = Counter(s)
return [i for i in h if h[i] == k]
這將返回字符串s
在發生k
次的所有字符。
+0
謝謝薩爾瓦多。但是如果我保留一個散列表,我需要檢查每個迭代元素是否已經存在,所以每次迭代都有一個O(logN)時間,總運行時間爲O(NlogN),對嗎? – Zongyang
+0
@Zongyang請仔細閱讀基本數據結構的時間複雜度,你在hash中的搜索是'O(1)'。 –
相關問題
- 1. 確定字符串數組中是否出現多次(C#)
- 2. C#確定字符串中的所有字符是否相同
- 3. AWK確定字符串中的所有字符是否相同?
- 4. C++ - 確定給定的字符串是否只有Furigana字符
- 5. 確定字符串是否具有所有唯一字符
- 6. 確定是否字符串具有獨特的所有字符
- 7. 使用「in」檢查字符串中是否出現字符串
- 8. 確定字符串是否在字符串內
- 9. 字符串出現在另一個字符串中的次數
- 10. 刪除從字符串設定字符串,多次出現
- 11. Python:計算字符串中給定字符的出現次數
- 12. 計算字符串中特定字符的出現次數
- 13. 在給定字符第n次出現時分割字符串
- 14. 如何在字符串中出現多次的字符上分割字符串
- 15. 確定字符串是否爲「肯定」?
- 16. 發現字符串中給定子字符串的出現次數
- 17. 檢查字符串A中是否出現多個字符?
- 18. 確定MySQL中第一次出現字符串的位置?
- 19. 檢查確切的子字符串是否在字符串中
- 20. 確定字符串是否以另一個字符串結尾
- 21. 計算字符串向量中字符串出現次數
- 22. 字符串中子字符串的出現次數(Java)
- 23. 獲取字符串列表中字符串的出現次數。
- 24. 第一次替換字符串中出現的字符串VB.NET
- 25. 字符串中子字符串出現次數
- 26. 在只出現一次的字符串中查找字符
- 27. 檢查一次出現在字符串中相同字符的
- 28. 字符串中出現次數
- 29. 是否有算法可以查找字符串中任何指定字符的第一次出現?
- 30. 從字符串中提取所有出現的特定字符
抽象方法:將字符串縮減爲直方圖。掃描直方圖以查找頻率爲3的條目。鍵是出現三次的字符。 – Kaz