简单易懂next值nextval计算

读者注意! 本篇文章可能存在问题,由于时间太久本人按照计算方法也算不出相同答案,如有慧眼请指点。

序号

12345

字符串

abaca
next值01121

next数组的求解方法是:第一位的next值为0,第二位的next值为1,后面求解每一位的next值时,根据前一位进行比较。首先将前一位与其next值对应的内容进行比较,如果相等,则该位的next值就是前一位的next值加上1;如果不等,向前继续寻找next值对应的内容来与前一位进行比较,直到找到某个位上内容的next值对应的内容与前一位相等为止,则这个位对应的值加上1即为需求的next值;如果找到第一位都没有找到与前一位相等的内容,那么需求的位上的next值即为1。

解法:重点!!!

前两位next始终为 0 1;

求第三位next值时看前一位(序号为2)b(都和这个b比较),它的next值为1,则看序列号为1对应是a与b不相同,没有再之前的数,所以第三位next值是1  

求第四位next值时看前一位(序号为3)a(都和这个a比较),它的next值为1,则看序列号为1对应是a与a相同,所以第三位next值是1 +1=2 

求第五位next值时看前一位(序号为4)c(都和这个c比较),它的next值为2,则看序列号为2对应是b与c不相同,接着看b的next值为1对应序列号为1的是a,a与c不相同。到头都没有相同的,则next值是1 

 

例子:

可以用这两个例子练练手看掌握程度

 

字符串  a  b  a  a  b  c  a  c  

next值  0  1  1  2  2  3  1  2

 

字符串  a  b  a  b  a  a  a  b  a  b  a  a

next值  0  1  1  2  3  4  2  2  3  4  5  6

 

netval的计算

 

序号12345

字符串

abaca
next值01121
nextval01020

 

1、第一位nextval为0,第二位如果与第一位相同则为0,如果不同则为1

2、第三位a的next值为1,找到序号1对应字符串为a,相同则把序号一的next值给第三位的nextval是0

3、第四位c的next值为2,找到序号2对应字符串为b,不相同保留当年next值到nextval还是2

4、第五位a的next值为1,找到序号1对应字符串为a,相同则把序号一的next值给第三位的nextval是0

 

模式串       a  b  a  a  b  c  a  c  

next值       0  1  1  2  2  3  1  2  

nextval值  0  1  0  2  1  3  0  2 
 
    1.第一位的nextval值必定为0,第二位如果与第一位相同则为0,如果不同则为1。     

    2.第三位的next值为1,那么将第三位和第一位进行比较,均为a,相同,则,第三位的nextval值为0。 
    3.第四位的next值为2,那么将第四位和第二位进行比较,不同,则第四位的nextval值为其next值,为2。 
    4.第五位的next值为2,那么将第五位和第二位进行比较,相同,第二位的next值为1,则继续将第二位与第一位进行比较,不同,则第五位的nextval值为第二位的next值为1。     

    5.第六位的next值为3,那么将第六位和第三位进行比较,不同,则第六位的nextval值为其next值,为3。 
    6.第七位的next值为1,那么将第七位和第一位进行比较,相同,则第七位的nextval值为0。 
    7.第八位的next值为2,那么将第八位和第二位进行比较,不同,则第八位的nextval值为其next值,为2。  

 

 

  • 43
    点赞
  • 151
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 9
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

机器人梦想家

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值