在说KMP匹配算法之前,我们先来看看与它相近的另一种匹配算法,名曰“暴力匹配算法”
1.暴力匹配算法(设有如下的两组字符串)

第一位不匹配,则向右移动一位,得到如下的形式

B与A依旧不匹配,则继续往后移,当移到如下的形式时:

尽管之前的文本串和模式串已经分别匹配到了S[9]、p[5].但因为S[10]和p[6]不匹配,所以文本串会回溯到p[0].从而让是s[5]跟p[0]匹配(S[5]与p[0]肯定匹配失败,因为S[5] = p[1] = B P[0] = A.所以S[5] != P[0])得到如下结果:

然后又开始进行后移匹配。
这块的算法代码为:
if(S[i] == P[j])
{
i++;
j++;
}
else
{
本文介绍了KMP匹配算法,对比了暴力匹配算法,并详细解释了KMP算法的思路,包括失配时如何利用next数组进行有效跳转,通过实例展示了KMP算法如何避免不必要的回溯,提高匹配效率。
最低0.47元/天 解锁文章
8442

被折叠的 条评论
为什么被折叠?



