【各种算法】【kmp】复习

kmp算法:一种字符串匹配算法,可以处理两个串得匹配问题,求一个串在另一个串中出现次数,判断a是b的字串等等。
算法来源:考虑对于a,b串暴力匹配,枚举b串出现的位置之后,将位置后面b串长度个位置挨个匹配,这种算法将会多次遍历b串,对于很多情况,出现位置只向后移动一次并不能与b串匹配。
考虑我们先求出b串的前i位串的最长公共前后缀(border)。
有这样的性质:对于a串和b串匹配到一点失配,令b串从nxt(border)开始继续匹配,这样的做法可以保证b串匹配到了a的每个位置。
nxt的求法:nxt[i]可以用之前的nxt[j]推出:
当且仅当 string[nxt[j]+1]==string[i]
string[1...nxt[j]]==string[inxt[j].....i1]
所以可以初始一个j=i-1然后一直跳nxt[j]直到满足条件。

快省选了草草写个小总结,有可能有不对的地方。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值