- 该算法可以在O(n)时间复杂度内判断出字符串A是否在字符串B中出现过
A的自我匹配
next[1]=0;
for(int i=2,j=0;i<=n;i++){
while(j&&a[i]!=a[j+1])j=next[j];
if(a[i]==a[j+1])j++;
next[i]=j;
}
A在B上的匹配
for(int i=1,j=0;i<=m;i++){
while(j>0&&(j==n||b[i]!=a[j+1]))j=next[j];
if(b[i]==a[j+1])j++;
f[i]=j;
//if(f[i]==n),此时就是A在B中某一次出现
}