Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 文本自动完成的最佳数据结构是什么?_Algorithm_Data Structures_Performance - Fatal编程技术网

Algorithm 文本自动完成的最佳数据结构是什么?

Algorithm 文本自动完成的最佳数据结构是什么?,algorithm,data-structures,performance,Algorithm,Data Structures,Performance,我有一个很长的单词列表,我想显示以用户输入的文本开头的单词。当用户输入字符时,应用程序应该更新显示给用户的列表。它应该类似于Android上的AutoCompleteTextView。我只是想知道存储单词的最佳数据结构,以便搜索速度非常快 可以使用trie 一篇好文章- PS:如果您有一些“不分支”的子序列,那么您可以通过使用基数trie来节省空间,这是一种trie实现,在可能的情况下在节点中放置多个字符-您可能会发现这个线程很有趣: 这并不是您想要的,而是您的问题的一个稍微扩展版本。为了

我有一个很长的单词列表,我想显示以用户输入的文本开头的单词。当用户输入字符时,应用程序应该更新显示给用户的列表。它应该类似于Android上的AutoCompleteTextView。我只是想知道存储单词的最佳数据结构,以便搜索速度非常快

可以使用trie

一篇好文章-


PS:如果您有一些“不分支”的子序列,那么您可以通过使用基数trie来节省空间,这是一种trie实现,在可能的情况下在节点中放置多个字符-

您可能会发现这个线程很有趣:


这并不是您想要的,而是您的问题的一个稍微扩展版本。

为了实现自动完成功能,还使用了三元搜索树(TST):

但是,如果要在字符串中查找任意随机子字符串,请尝试使用通用后缀树


尝试(及其各种类型)在这里很有用。关于这一主题的更详细论述见本节。也许您可以为Android实现一个完成trie?

我认为哈希表是最好的。我不确定您使用的语言或平台,所以通常哈希表是快速和动态的。。。首先,我们需要了解您使用的平台。安卓网间网操作系统?窗户?Linux?OSX?Web还是HTML?@c0d3Junk13您如何在哈希表中搜索具有给定前缀的字符串?@c0d3Junk13我这样问是因为问题很清楚需要什么,而且哈希表似乎与这些要求没有任何共同之处,我认为建议它是完全没有意义的。@c0d3Junk13你不需要告诉我哈希表有很多很好的用途。但是这个问题的用例并不在其中。此外,我当然希望大多数程序员都知道,存储数据的“最佳方式”取决于您需要如何处理它。正如我们似乎同意的那样,哈希表不适合按前缀进行搜索(即执行自动完成)。哦,至于我为什么要“挑剔”你的评论:我原本希望你的建议有用,但我只是没有抓住要点,但你似乎证实事实并非如此。