字符串匹配算法优化

157 阅读1分钟

总览

算法简述空间复杂度时间复杂度极端时间复杂度
Brute Force(BF)顺序模式串匹配算法-< O(nm))O(nm))
Boyer-Moore(BM)基于后缀匹配的模式串匹配算法-O(n/(m+1)O(mn)
Horspool匹配窗口的最后一个字符跟模式串中的最后一个字符比较-O(n)O(mn)
Sunday在匹配失败时关注的是文本串中参加匹配的最末位字符的下一位字符。如果该字符没有在匹配串中出现则直接跳过,即移动步长=匹配串长度+1;否则,同BM算法一样其移动步长=匹配串中最右端的该字符到末尾的距离+1-O(n)O(mn)
Knuth-Morris-Pratt(KMP)高效的前缀匹配算法-O(m+n)-
Rabin-Karp(RK)过哈希算法对主串中的n-m+1个子串分别求哈希值-O(n)
Aho-Corasick(AC)应用有限自动机的状态转移来模拟字符的比较---

实现轮子