这个BF算法,虽然听名字真的不错,觉得它很快,其实就一样,只不过加了一点技巧,匹配方法罢了。
复杂度为O(n*m)
主要参考博客:https://blog.csdn.net/qq_33001647/article/details/68941480
上面讲得很透彻,我就把代码拿过来了,真不好意思了,尊重原创,看以上博客。
# include<iostream>
# include<string>
using namespace std;
int patternMatch_BF(string s,string t);
int main()
{
string s;
string t;
cout << "请输入主串:";
cin >> s;
cout << "请输入子串:";
cin >> t;
int result = patternMatch_BF(s, t);
if (result==-1)
cout <<endl<< "匹配失败" << endl;
else cout << endl<<"子串在主串中的位置为:" << result << endl;
return 0;
}
int patternMatch_BF(string s, string t)//返回子串t在串s第一次出现的位置(从1开始),若t不是s的子串