問題:你有一部智能手機,你打開了聯繫人應用程序。你想搜索一個聯繫人。比方說manmohan
。但你不記得他的全名。你只記得mohan
,所以你開始打字。當你輸入'm'時,聯繫人應用程序將開始搜索具有字母'm'的聯繫人。假設您在聯繫人列表("manmohan", "manoj", "raghav","dinesh", "aman")
中存儲了姓名,現在聯繫人將顯示manmohan,manoj and aman
。現在你輸入的下一個字符是'''(直到現在你已經鍵入「mo」)現在結果應該是「man mo han」。你將如何實現這樣的數據結構?查找與查詢匹配的所有名稱:如何使用後綴樹?
我的方法是應用KMP,因爲您在所有可用聯繫人中查找模式「m」,然後選擇「mo」。然後顯示匹配的字符串。但採訪者說這不是有效的。 (我想不出有什麼更好的辦法。)在離開之前他說有一個算法可以幫助。如果你知道它,你可以解決它。我做不到。 (在離開之前我問了那個標準算法。訪問者說:後綴樹)。任何人都可以解釋請問,它是如何更好?或者哪個是實現這種數據結構的最佳算法。
https://en.wikipedia.org/wiki/Suffix_tree –
相關:http://stackoverflow.com/a/17703739/56778 –