BF算法,即暴力(Brute Force)算法,是普通的模式匹配算法,BF算法的思想就是将目标串S的第一个字符与模式串T的第一个字符进行匹配,若相等,则继续比较S的第二个字符和 T的第二个字符;若不相等,则比较S的第二个字符和T的第一个字符,依次比较下去,直到得出最后的匹配结果。BF算法是一种蛮力算法。
这个思路和代码 还是比较简单的 就是用子串的字符 一个一个的和 主串进行对比,如果对应的元素不同就 子串 参照位置 偏移 一个位置 ,即子串从主串下一个位置开始进行比较,直到匹配成功 - -
具体代码如下:
#include<stdio.h>
#include<string.h>
int bf( char *zhu ,char *zi)
{
int i = 0 ;
int temp=i;//定义一个中间变量temp 用于存放i的 每一次 最开始的位置
int j = 0;
int length= strlen(zhu);
int length2=strlen(zi);
while (i<length&&j<length2)
{
if (zhu[i]==zi[j])
{
i++;
j++;
}
else
{
i=temp+1;//每次I 开始的位置+1
temp=i;//I赋值完后给temp
j=0;//j 从0开始
}
}
if(j==length2)
{
return i-j +1; //因为I-J就是下标偏移 啊,然后因为主串是从0开始的,所以加一才是正确的"位置" 而不是"下标 "
}
else
{return -1;
}
}
int main()
{
char *zhu="daqabcdeqwfer";
char *zi="abcd";
printf("%s\n",zhu);
printf("%s",zi);
printf("\n主串在第: %d个字符开始 与子串匹配!!" ,bf(zhu,zi));
return 0;
}
这期博客很水,可能是因为五一假期 …吧… 哈哈哈