原题请点击此处
**
Sample Input
3
BAPC
BAPC
AZA
AZAZAZA
VERDI
AVERDXIVYERDIAN
Sample Output
1
3
0
**
#include<stdio.h>
#include<string.h>
int Index_KMP(char S[],char T[],int next[]){
int i=0,j=0,k=0;
int lenT,lenS;
lenT=strlen(T);
lenS=strlen(S);
while(i<lenS)
{
if(j==-1||S[i]==T[j]){++i;++j;}
else j=next[j];
if(j==lenT-1){
k++;
j=next[j];
}
}
return k;
}
void get_next(char T[],int next[]){
int i,j,lenT;
i=0;next[0]=-1;j=-1;
lenT=strlen(T);
while(i<lenT-1)
{
if(j==-1||T[i]==T[j])
{
++i;++j;next[i]=j;
}
else j=next[j];
}
}
int main(){
int next[10005];
char S[1000005],T[10005];
int n,k;
scanf("%d",&n);
getchar();
while(n--){
gets(T);
gets(S);
get_next(T,next);
k=Index_KMP(S,T,next);
printf("%d\n",k);
}
return 0;
}