题目描述
有两个字符串s和t,设计一个算法求t在s中出现的次数。
例如,s=“abababa”,t=“aba”,则t在s中出现2次。
字符串长度最大为1000
输入
第一行为字符串s
第二行为字符串t
输出
输出 t 在 s 中出现的次数
样例输入
abababa
aba
样例输出
2
#include<stdio.h>
#include<string.h>
int BF(char s[],char t[]);
void print(char a[]);
int main()
{
char s[1000];//父串
char t[1000];//子串
gets(s);
gets(t);
printf("%d ",BF(s,t));
//print(t);
}
int BF(char *s,char *t)
{
int i = 0,j = 0,num = i;
int cnt = 0;
//num用来记录i每一次开始的位置,当跟子串比对过一次发现不对时,回滚到上一次开始位置的后一个
while(s[i]!='\0'&&t[j]!='\0')
{
if(s[i]==t[j])
{
i++;
j++;
}
else
{
num++;
i=num;
j=0;
}
if(t[j]=='\0')
{
j=0;
cnt++;
num+=strlen(t)-1;
}
}
return cnt;
}
void print(char a[])
{
int i = 0;
while( *(a+i)!='\0')//^.^
{
printf("%c",a[i]);
i++;
}
return;
}