kmp算法中next的介绍

kmp介绍
对于串s = “abcdefg…” (s[0]s[1]s[2]…s[n-1])
next[n-1](n > 2,next[0] = -1,next[1] = 0)的直观寻找过程应该是:
1,先比较s[0]s[1]s[2]…s[n-3]和s[2]s[3]…s[n-2]是否相同,若相同,则next[n-1] = n-2;若不同进入2.
2,比较s[0]s[1]s[2]…s[n-4]和s[3]s[4]…s[n-2]是否相同,若相同,则next[n-1] = n-3,若不同,进入3,
3,…

n-2,比较s[0]和s[n-2],若相同,则next[n-1] = 1,若不同,next[n-1] = 0;
对于串s;
一:s = “a”,next[0] = -1;
二:s = “aa”,next[0] = -1,next [1] = 0;
三:s = “aaa”,next[0] = -1,next[1] = 0,next[2] = 1;
N:s为n个a,next[0] = -1,next[1] = 0,next[2] = 1,…next[n-1] = n - 2;
注意:有的时候当s长度为n时,需要用到next[n],这时我们可把next[n]看s’(在s的末尾再随便加一个字符)的next[n],如上面例子中的二,next[2] = 1;三,next[3] = 2;

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值