#include<iostream> //
using namespace std;
int BF(char S[],char T[]); //声明函数
int main(){
char S[]="abbabccbcbcbabadb"; //定义字符串S
char T[]="ccbcbc"; //定义字符串T
int index=0; //初始化主串比较位置
int i=0; //在串T,S中设置比较的起始位置下标
int j=0; //同上
index =BF(S,T); //调用函数
cout<<S<<endl; //输出字符串S
cout<<T<<endl; //输出字符串T
cout<<index<<endl; //输出模式串在主串中的起始下标
return 0;
}
int BF(char S[],char T[])
{
int index=0; //初始化主串比较位置
int i=0,j=0; //在串T,S中设置比较的起始位置下标
while((S[i]!='\0')&&(T[j]!='\0'))//'\0'是 c++ 语言中的字符串结束符
{
if(S[i]==T[j]) //如果 S[i]==T[j],进入循环
{
i++; //主串S位置加1
j++; //模式T位置加1
}
else{ //否则
index++; // 下一趟匹配位置的开始位置
i=index; //主串比较位置回溯到下一个位置
j=0; //模式串回到开始位置
}
}
if(T[j]=='\0')return index; //模式串匹配完成返回模式串在主串中的起始下标位置
else return 0; //否则为空
}
字符串匹配BF算法
最新推荐文章于 2022-12-29 22:01:03 发布