#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxn=1000001;
char a[maxn],b[maxn];
int T,la,lb,p[maxn];
int main()
{
scanf("%d",&T);
while (T--)
{
scanf("%s%s",b+1,a+1);
la=strlen(a+1); lb=strlen(b+1);//这几不要忘记+1
int j=0;
memset(p,0,sizeof(p));
for (int i=2; i<=lb; i++)
{
while (j>0 && b[i]!=b[j+1]) j=p[j];
if (b[i]==b[j+1]) j++;
p[i]=j;
}
j=0;
int ans=0;
for (int i=1; i<=la; i++)
{
while (j>0 && a[i]!=b[j+1]) j=p[j];
if (a[i]==b[j+1]) j++;
if (j==lb)
{
ans++; j=p[j];
}
}
printf("%d\n",ans);
}
}
[poj3461]Oulipo(KMP)
最新推荐文章于 2020-07-22 02:59:48 发布