之前在学KMP算法时一直理解不了获取next数组的函数是如何实现的,现在大概知道怎么一回事了,记录一下我对获取next数组的理解. KMP算法实现的原理就不再赘述了,先上KMP代码: 1 void getNext(char *pat, int *next) { 2 next[0] = -1; 3 int m = strlen(pat); 4 for (int i = 1; i < m; i++) { 5 int j = next[i - 1]; 6 while (j != -1 &&…
求nextval数组值有两种方法,一种是不依赖next数组值直接用观察法求得,一种方法是根据next数组值进行推理,两种方法均可使用,视更喜欢哪种方法而定. 本文主要分析nextval数组值的第二种方法 a b a a b c a c 模式值 0 1 1 2 2 3 1 2 next数组 0 1 0 2 1 3 0 2 nextval数组 1.第一位的nextval值必定为0,第二位如果于第一位相同则取相同值下的next值为0,如果不同则取当下next的值为1. 2.第三位的next值为1,那么…