KMP 算法步骤详解

参考:mooc浙大数据结构
数据结构_浙江大学_中国大学MOOC(慕课)

kmp算法的本质是:
1、当指针 i 指向的 字符s[i] 和指针 j 指向的 字符p[j] 不相同时,指针 i 不回退,指针 j 回退。(对比暴力算法是,指针 i 回退到之前位置的下一个位置,指针 j 直接回退到0)
2、然后根据p的相同前后缀处理出来一个数组,记录着每次不匹配时,j 指针应该回退的位置。

记录指针回退位置的数组称为match数组,match[i]表示的是:
字符串p中,下标从0到i这段区间内,找到最长的且相同的前后缀,该前缀最后一个字符的下标。如果0-i区间内没有子串,那么记录match[i]=-1

构建match数组时的思想类似动态规划,在求match[i]时,假设match[i]之前的元素都已经被求出。那么
1、如果p[j] == p[match[j - 1] + 1] 那么 match[j] = match[j - 1] +

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值