#include<bits/stdc++.h>
using namespace std;
int p[1001];
char c1[1001],c2[1001];
int len1,len2;
void pre(){
p[0]=0;
p[1]=0;
for(int i=1;i<len2;i++){
int j=p[i];
while(j>0&&c2[j+1]!=c2[i+1]) j=p[j];
if(c2[j+1]==c2[i+1]) p[i+1]=j+1;
else p[i+1]=0;
}
}
int kmp(){
int j=0;
int c=0;
int last=-1;
for(int i=0;i<len1;i++){
while(j>0&&c2[j]!=c1[i]) j=p[j];
if(c2[j]==c1[i]) j++;
if(j==len2){
if(i-last>=len2){
c++;
last=i;
}
}
}
return c;
}
int main()
{
while(scanf("%s%s",c1,c2)){
if(c1[0]=='#') break;
len1=strlen(c1);
len2=strlen(c2);
pre();
printf("%d\n",kmp());
}
return 0;
}
09-11
435
10-17
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交