您的位置:首页 > 其它

【模板】KMP

2016-04-30 12:44 295 查看
#include<iostream>
#include<cstdio>
#include<cstring>
#define N 1000010
using namespace std;
char a
,b
;
int f
,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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: