//唯有这份热情。//
原题,代码块:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void GetNext(char* p,int next[])
{
int pLen = strlen(p);
next[0] = -1;
int k = -1;
int j = 0;
while (j < pLen - 1)
{
//p[k]表示前缀,p[j]表示后缀
if (k == -1 || p[j] == p[k])
{
++k;
++j;
next[j] = k;
}
else
{
k = next[k];
}
}
}
int main(int argc, char *argv[])
{
char s1[10000],s2[10000];
scanf("%s",s2);
getchar();
scanf("%s",s1);
int len=strlen(s2);
int houz[len];
int shuwei=0;
GetNext(s2,houz);
int l=strlen(s1);
int i=0;
int j=0;
int count=0;
while (i < l && j < len)
{
if (j == -1 || s1[i] == s2[j])
{
if(j==len-1){
count++;
j=0;
continue;
}
i++;
j++;
}
else
{
j = houz[j];
}
}
printf("%d",count);
return 0;
}