KMP算法中求next数组,nextval数组的方法

一、求next数组的值:

  1. 第一位的next值必为0,第二位的next值必为1;
  2. 前一位字符与其next值对应的字符比较,若相等,则该位的next值就是前一位的next值加1;
  3. 若不等,向前继续寻找对应的字符与前一位进行比较,直到找到某位上的内容的next值对应的内容与前一位相等为止,则这个位对应的next值加1即为所求next值;
  4. 若找到第一位都没有与前一位相等的内容,那么所求的位上的next值为1

二、求nextval数组的值:

  1. 第一位的nextval值必为0,第二位若与第一位相等则为0,不等则为1;
  2. 当前位字符与其next值对应的字符比较,若不等,则该位的nextval值就是当前位的next值;
  3. 若相等,向前继续寻找对应的字符与当前位相比较,直到找到某位上的内容的next值对应的内容与当前位不等为止,则这个位对应的next值即为所求nextval值;
  4. 若找到第一位都没有与当前位不等的内容,那么所求的位上的nextval值为0

三、 求next数组的方法与求nextval数组的方法进行对比:

  1. next前两位值固定;nextval第一位值固定。
  2. next求的是与前一位字符相等的情况;nextval求的是与当前位字符不等的情况。
  3. next找到相等情况时,那一位的next要加1;nextval找到不等情况时,那一位的next值即为nextval的值;
  4. next未找到相等情况,next值为1;nextval未找到不等情况,next值为0。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值