Bruce-Force算法
1.思路:
简单暴力的一个算法,如果遇到字符不匹配,主串i指针回溯到本次匹配位置的下一个位置,而模式串则重新回到0(开始的位置),开始下一轮的匹配。
成功匹配的条件自然事模式串指针j走到头,也就是j=length-1,length为模式串长度。跳出循环表示为j=length
2.算法复杂度
O(n*m),n,m分别是两个串长度。
3.小吐一番
有兴趣的小火半可以看下同时写的KMP算法 :点击打开链接
只能说这个更为简单易懂但就是容易Running Time Error....,有了BF的基础再去看上面的KMP哦~:)友好提示
Bruce-Force算法实现
#include<iostream>
#include<string>
using namespace std;
int Brute_Force_Algorithm(string Primer_Str, string Str)
{
int i = 0, j = 0;
int Length1 = Primer_Str.length();
int Length2 = Str.length();
while (i < Length1&&j < Length2)
{
if (Primer_Str[i] == Str[j])
{
i++;
j++;
}
else
{
i = i - j + 1; //字符不匹配,则主串的i指针回溯到本次开始的位置的下一个位置
j = 0; //模式串指针回到串头
}
}
if (j == Length2)
return i - Length2 + 1;
else
return -1;
}
int main()
{
string Primer_Str, Str;
cin >> Primer_Str >> Str;
cout << Brute_Force_Algorithm(Primer_Str, Str) << endl;
return 0;
}
BY_THE_WAY: Sad,隔了半个月才出了两篇,渣男在努力~,下周高数over进入B(it)树啦