前言
算法前面的内容比较简单,不再赘述,大家可以去看这篇文章,写的非常详细:
链接: 详解KMP算法-孤~影.
上面这篇文章写的很详细,但是k = next[k] 这一部分只放了图,一开始还是不太明白。所以我又参考了这篇文章:KMP算法详解-yyzsir 解释k = next[k] 的部分。
1. KMP算法程序(C语言描述)
void Getnext(int next[],String t)
{
int j=0,k=-1;
next[0]=-1;
while(j<t.length-1)
{
if(k == -1 || t[j] == t[k])
{
j++;k++;
next[j] = k;
}
else
{
k = next[k]; //就是这一句!!!!很迷!!!!!!
}
}
}
2. k =next(k) 语句理解
沿用原文章的串符号表示——P:子串
前面提