BF算法:用于字符串的匹配,就是在主串中查找子串
例如:主串:s="cddcdc" 子串:t="cdc"
第一次比较:cdd cdc
第二次 :ddc cdc
第三次 :dcd cdc
..................................................
这样一直比较下去,直达找到子串,找到子串,返回子串在主串中开始下标,没有找到就返回-1。
#include<string.h>
#include<stdio.h>
int BF(char *str,char *sub)
{
int i=0;
int j=0;
int stlen=strlen(str);
int sublen=strlen(sub);
while(i<stlen && j<sublen)
{
if(str[i]==sub[j])
{
i++;
j++;
}
else//不匹配
{
i=i-j+1;
j=0;
}
}
if(j==sublen)
{
return i-j;
}
else
{
return -1;
}
}
int main()
{
char str[]="abcababcabc";
char sub[]="abcabc";
printf("%d \n",BF(str,sub));
}