首先KMP是一种高效模式匹配的算法想要理解它首先得知道几个名词
前缀:不包括字符串最后一个字符的连续字符串的全部组合。如:abc 前缀就有{a,ab}
后缀:不包括字符串第一个字符的连续字符串的全部组合。如:abc后缀就有{c,bc}
以 i 为终点的字符串后缀和以 1 为起点的前缀相等的最长公共长度就记为 next[ i ],即以i结尾的最长相等前后缀的集合
next数组的求解
int GetNext(char ch[],int length,int next[]){
next[1] = 0;
int i = 1,j = 0;
while(i <= length){
if(j == 0 || ch[i] == ch[j]) next[++i] = ++j;
else j = next[j];
}
}