昨天看了kmp,nxt的数组那部分有两种写法
第一种
k = 0;
for(int i = 1;i<len;i++)
{
if( k > 0 && str[k] != str[i])
k = nxt[k-1];
if(str[k]==str[i])k++;
nxt[i]=k;
}
第二种优化之后
int k = 0, j = -1;
nxt[0]=-1;
while(k<len)
{
if(j==-1 || str[k]==str[j])nxt[++k]=++j;
else j=nxt[j];
}