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。

你可能感兴趣的:(数据结构)