創建詞典樹的複雜性是什麼?創建詞典樹的複雜性是什麼
回答
適當的數據結構可能是一個排序列表。在這種情況下,這變成了二分搜索問題,所以O(log n)。
+1由於給出了一個排序列表,前面,這可能是正確的(即他的教授正在尋找的答案:-) – 2009-10-17 03:25:06
只是運行一個簡單的循環,並檢查每個單詞是否以任何開頭。
幾乎在每種語言中都有一個構建函數用於檢查一個字符串是否以另一個字符串開頭。
複雜度是O(log n),而n是詞典中單詞的數量。
一個簡單的循環將是O(n)。 – 2009-10-17 03:22:38
但你只要找到 – Letterman 2009-10-17 15:22:33
就停下來,這意味着你必須平均掃描一半的列表,這使得O(0.5n)是O(n)。 – 2009-10-19 08:38:36
正如上面提到的Gabe Trie是一個很好的解決方案,但對於有大量單詞的字典實現起來有點困難。如果O(n log n)算法適合你,你可以用二分查找來解決這個問題。這裏是用C編寫的代碼:
char dict[n][m]; // where n is number of words in dictionary and // m is maximum possible length of word char word[m]; // it's your word int l = -1, r = n; while(l+1 < r) { int k = (l+r)/2; if(strcmp(dict[k], word) < 0) l = k; else r = k; } int len = strlen(word); l++; // first word's index with greater or equal prefix then word is l+1 bool matches = (strlen(word[l]) >= len); for(int i = 0; i < len && matches; i++) { if(word[i] != dict[l][i]) { matches = 0; } } if(matches) { printf("given word is prefix of %dth word.", l); } else { printf("given word isn't in dictinary."); }
用二進制搜索找到字典中的單個單詞不是O(n log n)!它是O(log n)。 – 2009-10-17 11:10:29
- 1. 爲圖形構建BFS樹的複雜性是什麼?
- 2. 複雜詞典打印
- 3. 使用字典類創建單詞樹
- 4. 什麼是詞彙樹,以及如何構建詞彙樹?
- 5. JavaScript中JSON.parse()的複雜性是什麼?
- 6. C++中set_intersection的複雜性是什麼?
- 7. btree的插入複雜性是什麼?
- 8. OrderedDictionary的複雜性是什麼?
- 9. dist()的複雜性是什麼?
- 10. Exists C#的複雜性是什麼?
- 11. NSComparisonResult的複雜性是什麼? [Post interview]
- 12. `sort_by`的複雜性是什麼?
- 13. Python |如何創建複雜的字典
- 14. 創建二叉樹的時間複雜性
- 15. 如何創建一個包含單詞詞典的樹?
- 16. 什麼是創建RESTful複雜查詢的最佳方式?
- 17. 創建「集詞典」
- 18. 什麼是R +樹操作的時間和內存複雜度?
- 19. 爲什麼後綴樹中發生的複雜度是O(mn)?
- 20. Python的 - 創建詞典
- 21. 什麼是texmaker的最佳詞典?
- 22. SonarQube使用什麼樣的複雜性?
- 23. 二叉樹搜索的複雜性
- 24. Python - 從字典創建樹
- 25. python從excel創建詞典
- 26. 用Javascript/PHP創建詞典
- 27. 創建文本字詞典
- 28. 使用鍵創建詞典
- 29. 什麼是建立這本詞典最Python的方法?
- 30. 在排序的std :: list中搜索的複雜性是什麼?
你打算在這裏發表所有的作業題嗎? – 2009-10-17 03:13:08
如果Test可以提供一個合適的字典順序定義,那麼它不會從http://en.wikipedia.org/wiki/Lexicographically或某個類似的網站上被竊取;-) – DaveParillo 2009-10-17 03:23:22