本文主要是介绍串的模式匹配算法-BF(Brute-Force)算法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
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;elsereturn -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)树啦
这篇关于串的模式匹配算法-BF(Brute-Force)算法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!