KMP next数组

最近看了这个,突然似乎理解了,记录一下
比如对于子串”abcdabceedabcd”
如何计算next数组,next数组决定字符比较是跳转的位置

int next[15]={0};
next[0]=-1;

然后计算next[1]
前面只有一个a,那么next[1]=0;
next[2]
由于前面的next[1]=0;因此,直接比较前面的一个字符‘b’和第一个字符’a’。不同,因此next[2]=0;
next[3]
同样的由于next[2]=0;直接比较前面一个字符和第一个字符,不同next[3]=0;
.
.
.
直到next[5]
前面一个字符’a’等于第一个字符(为什么和第一个比较,因为next[4]=0);next[5]=next[4]+1;

next[6]
此时next[5]不为0,因此前前面一个字符和第next[5]个字符相比较,相同
因此,next[6]=next[5]+1;如果此时不同呢,那么就和next[next[5]]个字符相比较。
。。。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值