【发布时间】:2017-01-11 05:00:45
【问题描述】:
两种算法的时间复杂度都是 O(m+n)。
n 和 m 是文本的长度和要搜索的模式。
Z算法的空间复杂度是O(m+n),KMP算法的空间复杂度是O(n)。
我想知道哪种算法实际上更快,应该普遍使用哪种算法?
【问题讨论】:
-
在实践中,一些 O(m*n) 的算法甚至更快,例如 Boyer-Moore-Horspool。但是字符串搜索的性能在很大程度上取决于模式的大小和使用的字母的大小,因此没有算法的全局排名。
-
根据您自己的文本和模式分布对它们进行基准测试。在某些情况下,这些算法甚至无法击败暴力搜索。
-
感谢您的意见。
标签: pattern-matching string-matching