#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
char s1[1100],s2[1100];
int Next[1100];
int sum;
void GetNext()
{
int len;
len=strlen(s2);
Next[0]=-1;
Next[1]=0;
int i=1;
int j=0;
while(i<len)
{
if(j==-1||s2[i]==s2[j])
{
i++;
j++;
Next[i]=j;
}
else
j=Next[j];
}
}
void Kmp()
{
int len1=strlen(s1);
int len2=strlen(s2);
int i=0;
int j=0;
while(i<len1)
{
if(j==-1||s1[i]==s2[j])
{
if(j==len2-1)
{
j=-1;
sum++;
}
i++;
j++;
}
else
j=Next[j];
}
}
int main()
{
while(~scanf("%s",s1)&&strcmp(s1,"#")!=0)
{
sum=0;
scanf("%s",s2);
GetNext();
Kmp();
printf("%d\n",sum);
}
return 0;
}
杭电2087
最新推荐文章于 2020-12-20 02:14:02 发布