请问为什么第11行 j=border[j]; 去掉后代码还能过? 是数据水了还是kmp匹配成功后根本就不用跳 nextnextnext? 代码如下:
j=border[j];
int find(){ int ans=0; nn=strlen(ss); for(int i=0,j=0;i<nn;i++){ while(~border[j]&&ss[i]!=s[j]) j=border[j]; if(ss[i]==s[j])j++; if(j==n){ // printf("%d\n",i-n+2); ans++; j=border[j]; } } return ans; }