算法介绍
主串和子串从头开始,逐位比较。若相等,比较后面的;若不相等,回溯(主串从第二位置,子串从头开始比较),直到将字符串都比较完。匹配成功返回开始子串第一字符逻辑上在主串中的位置,否则返回0。
代码实现
BF算法使用面向结构的思想即可。
算法函数
int BF(char s[],char t[]){
int start=0; //start记录开始比较的位置,从主串头开始
int i=0,j=0; //i,j分别为主串、子串循环变量
while((s[i]!='\0') && (t[j]!='\0')){
if(s[i]==t[j]) {i++;j++;}
else{ cout<<"主串:";
start++; //开始位置后移
i=start; //主串从开始位置再次比较
j=0; //子串从头开始
}
}
if(t[j]=='\0') return start+1; //子串遍历完成,返回子串第一字符在主串的位置(逻辑上的第几个位置)
else return 0; //无法匹配,返回0
}