#include<iostream>
#include<cstdio>
#include<cstring>
#define N 1000010
using namespace std;
char a[N],b[N];
int f[N],j,ans;
int main(){
// freopen("in.txt","r",stdin);
// freopen("out.txt","w",stdout);
scanf("%s\n%s\n",a+1,b+1);
int la=strlen(a+1),lb=strlen(b+1);
f[1]=0;j=0;
for(int i=2;i<=lb;i++){
while(j && b[i]!=b[j+1]) j=f[j];
if(b[i]==b[j+1]) j++;
f[i]=j;
}
j=0;
for(int i=1;i<=la;i++){
while(j && a[i]!=b[j+1]) j=f[j];
if(a[i]==b[j+1]) j++;
if(j==lb) {j=f[j];ans++;}
}
printf("%d\n",ans);
return 0;
}
【模板】KMP
最新推荐文章于 2019-01-15 15:28:24 发布