我列出的单词。单词数量约为100万。
我的字符串在运行时出现,我要检查列表中哪个单词出现在字符串中并返回该单词(不需要返回句子中出现的所有单词,返回第一个单词也满足要求)。< / p>
一种解决方案是在字符串中逐个检查所有单词,但效率很低。
有人可以指出任何有效的方法吗?
答案 0 :(得分:1)
使用Knuth-Morris-Pratt算法。虽然一百万字并不是那么多。您还可以将文本正文转换为Trie结构,然后使用该结构检查搜索列表。有一种特殊的Trie叫做Suffix Tree,专门用于全文搜索。
答案 1 :(得分:0)
将您的单词列表放在树或哈希表中。
答案 2 :(得分:0)
除非您的单词列表被排序(或插入有效的数据结构,如有序的二进制树)以执行二进制搜索,否则您提出的解决方案是最有效的。
答案 3 :(得分:0)
HashSet
而不是List
。