我有很多字符串要与搜索词匹配。
例子:
folks
fort
garage
grabbed
grandmother
habit
happily
harry
heading
hunter
我想搜索字符串“ha”和返回列表开头的算法,其中字符串以“ha”开头,在本例中为“habit”。
当然,我不会一一列出,因为列表很大。我可以做一些预处理来对列表进行排序或将其放入使这种搜索快速的结构中。
有什么建议么?
我有很多字符串要与搜索词匹配。
例子:
folks
fort
garage
grabbed
grandmother
habit
happily
harry
heading
hunter
我想搜索字符串“ha”和返回列表开头的算法,其中字符串以“ha”开头,在本例中为“habit”。
当然,我不会一一列出,因为列表很大。我可以做一些预处理来对列表进行排序或将其放入使这种搜索快速的结构中。
有什么建议么?
那么你想要某种类型的排序结构。您可以使用 TreeMap 或 Radix Tree(Radix 将为您节省一些空间)。这样做的开销将是排序操作或插入排序数据结构的开销。然而,一旦排序,二分搜索会给你logN+1
最坏的情况查找性能。
值得注意的是Lucene
使用 Radix Trees afaik
您可以随时查看Patricia Trees。它们几乎非常适合这种事情。
Trie是您正在寻找的。
你的问题有很多模糊的地方。根据您的具体要求,您可能会发现Rabin-Karp字符串搜索方法对您有用。