kmp算法中next数组的求法:
这篇文章写的是next数组的图解,可以结合图解有助于理解下面的算法
#include<stdio.h>
#include<string.h>
int l,next[100];
char p[100];
void get_next_arr(){
int i=1,j=0;
next[0]=-1;
next[1]=0;
while(i<l){
if(j==-1 || p[i] == p[j]){
i++;
j++;
next[i] = j;
}
else
j=next[j];
}
}
int main(){
scanf("%s",p);
l=strlen(p);
get_next_arr();
for(int i=0;i<l;i++)
printf("%d ",next[i]);
printf("\n");
return 0;
}