BF算法的实现
算法就是两个字符串对应的字符一直匹配,首先第一个字符串和第二个字符串从0位置开始匹配,如果匹配失败,第二个字符串回到起点,第一个字符串回到上一次匹配起点+1的位置,然后重复上面步骤继续匹配。
#include <stdio.h>
int BF(char *a,char *b)
{
char *p1,*p2;
int i=0;
p1=a;
p2=b;
while(*p2!='\0'&&*p1!='\0')
{
if(*p2==*p1) //对等位置的字符相等就移一位
{
p1++;
p2++;
}
else //对等位置字符不等p1走一位,p2回到开始的位置
{
i++;
p1=a+i;
p2=b;
}
}
if(*p2=='\0') //p2走完说明匹配成功
return 1;
else
return 0;
}
int main(void)
{
char a[20];
char b[5];
int k;
scanf("%s%s",a,b);
k=BF(a,b);
if(k==1)
printf("YES");
else
printf("NO");
}