void getNext(){
nxt[1]=0;
for (int i=2,j=0;i<=n;i++){
while(j>0&&a[i]!=a[j+1]) j=nxt[j];
if (a[i]==a[j+1]) j++;
nxt[i]=j;
}
}
void getF(){
for (int i=1,j=0;i<=m;i++){
while(j>0&&(j==n||b[i]!=a[j+1])) j=nxt[j];
if (b[i]==a[j+1]) j++;
f[i]=j;
if (f[i]==n) ans++;
}
}
上面是一份KMP模板,但可以发现遍历时f是从1开始遍历的,但是...用string写的话,下标从0开始。那么需要改动哪些地方啊,有点懵
萌新刚学勿喷qaqaq