2016-10-03 62 views
0

有人可能会建议使用该算法从字符串中的一组K单词中找到任何单词的出现次数吗?
例如:
单词集合:{ABC,XYZ}
字符串:ABC defghi ABC jklab XYZ
输出:{0,9,17} //开始在字的位置字符串从字符串中的一组单词中出现一个单词

比运行KMP K次更好的东西!

+0

使用与交替组正则表达式来遍历所有匹配的对象,并抓住对手指数。 :) –

+0

请参阅Knuth Morris Pratt算法https://en.wikipedia.org/wiki/Knuth%E2%80%93Morris%E2%80%93Pratt_algorithm – auburg

+0

我猜KMP有助于查找字符串中的单词,但无助于发现来自字符串中的一组单词的单词。 –

回答

0

如果要在工业规模上执行此操作,请使用后缀树。您将每个后缀存储在字符串中,然后您可以基本上在O常量时间内搜索子字符串,因为所有子字符串都是具有不同后缀的相同字符串。

但是,在后缀树证明复杂性的前提下,它们需要很长的时间(它们在现实中用于扫描DNA序列数据等)。

相关问题