KMP
int i=0,j=-1;
next1[0]=-1;
while(i<x) //x为字符串长度
{
if(j==-1||k[j]==k[i])
{
i++;
j++;
next1[i]=j;
}
else
j=next1[j];
}
循环节
设字符串长度为l,l能被l-next[l]整除,循环节长度L为l-next[l],否则需要补L-l%L个字符才能循环.