BF算法,即暴力(Brute Force)算法,是普通的模式匹配算法,BF算法的思想就是将目标串S的第一个字符与模式串T的第一个字符进行匹配,若相等,则继续比较S的第二个字符和 T的第二个字符;若不相等,则比较S的第二个字符和T的第一个字符,依次比较下去,直到得出最后的匹配结果。BF算法是一种蛮力算法。
代码如下:
#include<stdio.h>
#include<stdlib.h>
int BF(char S[],char T[]){
int i=0;
int j=0;
while(S[i]!='\0'&&T[j]!='\0'){ //循环条件:两个数组都未使用完
if(S[i]==T[j]){//相等时 i和j都指向下一个字符
i++;
j++;
}
else{//不等时,j指向0,i指向i-j+1
i=i-j+1;
j=0;
}
}
if(T[j]=='\0'){//当j指向空时表示在S中找到了和T一样的字符串
return (i-j);//返回相同字符串在S中的位置
}
else{//没有找到
return -1;
}
}
int main()
{
int k;
char s[100],t[100];
printf("请输入主串\n") ;
gets(s);
printf("请输入模型串\n");
gets(t);
//调用BF算法
k=BF(s,t);
if(k==-1){
printf("主串中未找到与模型串匹配的子串\n");
}
else{
printf("在主串第%d个字符后找到与模型串匹配的子串\n",k);
}
return 0;
}
若有不足或更好的建议欢迎下方评论区留言!