BF算法是普通的模式匹配算法,BF算法的思想就是将目标串S的第一个字符与模式串P的第一个字符进行匹配,若相等,则继续比较S的第二个字符和P的第二个字符;若不相等,则比较S的第二个字符和P的第一个字符,依次比较下去,直到得出最后的匹配结果。
//BF算法
#include <iostream> using namespace std; int main(){
char dst[] = "ababa";
char src[] = "ababcababa";
int ptr_src = , ptr_dst = , index = ; //index源子串在目标串中的位置
int temp;
bool found = true;
cout<<sizeof(src)<<endl<<sizeof(dst)<<endl<<(sizeof(src) - sizeof(dst))<<endl; while(ptr_src <= (sizeof(src) - sizeof(dst))){ //遍历完目标子串 注意这儿要<=才行
temp = ptr_src;
found = true;
ptr_dst = ; //每一次的查找
while(ptr_dst < sizeof(dst)){
//如果有不相等的
if(src[ptr_src] != dst[ptr_dst]){
found = false;
break; //found置为false,开始回朔
}
ptr_src++;
ptr_dst++;
}
if(found) //查找到了
{
index = temp;
break;
}
ptr_src = temp + ;
}
if(found){
cout<<"查找成功,首次出现的位置为:"<<index<<endl;
}
else
cout<<"查找失败"<<endl; return ;
}