Bf法查找子字符串

BF法就是brute force暴力法,就是在主串里面一个一个字符向后移去查找是否存在需要查找的子字符串。

第一种方法查找所有出现的字符串在主字符串里的下标:

vector bfSearch(string &text, string &substr)
{
	vector begIndex;
	int n = text.size();
	int m = substr.size();

	//注意这里是i<=n-m不是i


测试:

int main()
{
	string str1 = "abcddbeddbaddb";
	string substr = "ddb";
	vector vi = bfSearch(str1, substr);
	for(auto x:vi)
		cout<

运行:

Bf法查找子字符串_第1张图片

显式回溯,查找第一个出现的字符串在主串中的下标:

int bfSearchTrackBack(string &text, string &substr)
{
	int n = text.size();
	int m = substr.size();
	int j = 0;
	int i = 0;
	for (; i<=n-m && j

测试:

int main()
{
	string str1 = "abcddbeddbaddb";
	string substr = "ddb";
	cout<

运行:


Bf法查找子字符串_第2张图片

你可能感兴趣的:(Bf法查找子字符串)