题目描述
输入一个主串和一个子串,用KMP进行匹配,问进行几趟匹配才成功,若没成功,则输出0
输入
输入一个主串和一个子串
输出
匹配的趟数
样例输入
ababcabcacbab
abcac
样例输出
3
参考代码
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int index(char s[],char t[],int pos)
{
int i,j,slen,tlen;
i=pos;
j=0;
slen=strlen(s);
tlen=strlen(t);
while(i<slen && j<tlen)
{
if(s[i]==t[j])
{
i++;
j++;
} else
{
i=i-j+1;
j=0;
}
}
if(j>=tlen)
return i-tlen+1;
return -1;
}
int main()
{
char s[80],t[80];
int i=0,pos=0,flag=0,count=0;
gets(s);
gets(t);
flag=index(s,t,pos);
if(flag==-1)
printf("0n");
else{
for(i=0;i<flag;i++)
if(s[i]==t[0])
count++;
}
printf("%dn",count);
return 0;
}
解析
暂无