1.BF算法(蛮力匹配):
(1)从主串S的第一个字符开始和模式T的第一个字符进行比较,若相等,则比较后续字符;否则,从主串S的第二个字符开始和模式T的第一个字符进行比较。
(2)重复步骤(1),直到S或T中的所有字符比较完成。
(3)若T中的字符全部比较完成,则匹配成功,返回本次匹配的开始位置;否则匹配失败,返回0
#include <iostream>
using namespace std;
//模式匹配BF算法
int Bf(char *str,char *s){
int i,j,start;
i=j=start=0;
while(str[i]!='\0'&&s[j]!='\0'){
if(str[i]==s[j]){
i++;j++;
}
else{
start++;i=start;j=0;
//主串回溯到本次匹配时起始位置的下一个
//子串回溯到第一个字符(下标为0)
}
}
if(s[j]=='\0')//子串全部匹配成功
return start+1;//返回本次匹配时主串的起始位置(不是下标)
else
return 0;
}
int main()
{
char str[20]={'a','b','d','a','b','c','e'};
char s[10]={'a','b','c'};
cout<<Bf(str,s);
return 0;
}