我有很长的单词列表,我想显示以用户输入的文字开头的单词。当用户输入字符时,应用程序应更新显示给用户的列表。它应该像Android上的AutoCompleteTextView。我只是想知道存储单词的最佳数据结构,以便搜索速度非常快。
答案 0 :(得分:10)
可以使用特里。 http://en.wikipedia.org/wiki/Trie https://stackoverflow.com/search?q=trie
一篇不错的文章 - http://www.sarathlakshman.com/2011/03/03/implementing-autocomplete-with-trie-data-structure/
PS:如果你有一些“不分支”的子序列,那么你可以通过使用基数trie来节省空间,这是一个trie实现,在可能的情况下将几个字符放在节点中 - http://en.wikipedia.org/wiki/Radix_tree < / p>
答案 1 :(得分:1)
答案 2 :(得分:1)
为了实现自动完成功能,还使用了三元搜索树(TST):
http://igoro.com/archive/efficient-auto-complete-with-a-ternary-search-tree/
但是,如果要在字符串中查找任何随机子字符串,请尝试使用广义后缀树。
答案 3 :(得分:0)
尝试(及其各种变体)在这里很有用。有关此主题的更详细的处理方法是paper。也许你可以为Android实现完成trie?