KMP匹配算法

本文介绍了KMP匹配算法,对比了暴力匹配算法,并详细解释了KMP算法的思路,包括失配时如何利用next数组进行有效跳转,通过实例展示了KMP算法如何避免不必要的回溯,提高匹配效率。
摘要由CSDN通过智能技术生成

在说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
{
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值