kmp 算法 理解
我晕了,其中的逻辑没理解,从里面转不出来,不知为啥
为防止遗忘,记忆
函数值的计算,见百度
#include <stdio.h> void kmp(char *p,int next[]) { int i; int j=0; int k=-1; next[0]=-1; while(p[j]!='\0') { if(k==-1||p[j]==p[k]) { j++; k++; if(p[j]!=p[k]) next[j]=k; else next[j]=next[k]; }else { k=next[k]; } } for(i=0;i<j;i++) printf("%d ",next[i]); printf("\n"); } int main() { char str[10]={'a','b','c','a','c'}; int n[10]; kmp(str,n); return 0; }