为什么我一遍 KMP 就过了?
for(int i=2,j=0;i<=m;i++) { while(j&&b[j+1]!=b[i]) j=ne[j]; if(b[j+1]==b[i]) j++; ne[i]=j; } for(int i=1,j=0;i<=n;i++) { while(j&&b[j+1]!=a[i]) j=ne[j]; if(b[j+1]==a[i]) j++; if(j==m) ans++,j=ne[j]; }