找出给定句子中出现的单词

时间:2012-09-27 04:08:22

标签: string algorithm

我列出的单词。单词数量约为100万。

我的字符串在运行时出现,我要检查列表中哪个单词出现在字符串中并返回该单词(不需要返回句子中出现的所有单词,返回第一个单词也满足要求)。< / p>

一种解决方案是在字符串中逐个检查所有单词,但效率很低。

有人可以指出任何有效的方法吗?

4 个答案:

答案 0 :(得分:1)

使用Knuth-Morris-Pratt算法。虽然一百万字并不是那么多。您还可以将文本正文转换为Trie结构,然后使用该结构检查搜索列表。有一种特殊的Trie叫做Suffix Tree,专门用于全文搜索。

答案 1 :(得分:0)

将您的单词列表放在树或哈希表中。

答案 2 :(得分:0)

除非您的单词列表被排序(或插入有效的数据结构,如有序的二进制树)以执行二进制搜索,否则您提出的解决方案是最有效的。

答案 3 :(得分:0)

  • 将您的文字存储在HashSet而不是List
  • 将输入字符串解析为单词数组。
  • 逐字检查,如果集合中存在。