版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Mr_Qin_AC/article/details/83086810
# include<stdio.h>
# include<string.h>
# include<algorithm>
using namespace std;
# define maxn 1200
char s[maxn];
char z[maxn];
int a[maxn];
int ls,lz,sum;
void abc(){
int i=1,j=0;a[0]=0;
while(i<lz){
if(z[i]==z[j]){
a[i++]=++j;
}
else if(j==0){
i++;
}
else{
j=a[j-1];
}
}
}
int kmp(){
sum=0;
int i=0,j=0;
for(i=0;i<ls;i++){
while(j&&s[i]!=z[j]){
j=a[j-1];
}
if(s[i]==z[j]){
j++;
}
if(j==lz){
sum++;
j=0;
}
}
return sum;
}
int main(){
while(scanf("%s",s)){
if(s[0]=='#'){
break;
}
scanf("%s",z);
ls=strlen(s);
lz=strlen(z);
abc();
printf("%d\n",kmp());
}
return 0;
}