最有效的算法是Aho-Corasick算法,它给出一个长度为n的字符串和一组总长度为m的字符串,可以在时间O(n + m + z)中找到所有匹配,其中z是总数比赛报道.它基于有限自动机,是KMP字符串匹配算法的推广.
这个算法的一个很酷的方面是,如果你有一组固定的关键字和一堆你要搜索的文本字符串,那么可以通过进行O(m)预处理来建立匹配器来加速算法.然后,您可以在时间O(n + z)中找到长度为n的字符串中的所有匹配项.
另一方面,如果你有一个固定的字符串,然后想要匹配一组不同的模式字符串,请考虑查看后缀树,它们提供相同的运行时保证,但如果文本是固定的则更快.
希望这可以帮助!
| 归档时间: |
|
| 查看次数: |
1435 次 |
| 最近记录: |