#include <iostream>
using namespace std;
#include <string>
int BF(string str, string temp)
{
int i = 0;
int j = 0;
//如果i和j是从1开始匹配的,此处的循环条件应该加上等于号
while (i < (int)str.length() && j < (int)temp.length())
{
if (str[i] == temp[j])
{
i++;
j++;
}
else
{
i = i - j + 1; //i回溯
j = 0;
}
}
//如果j的值与子串的长度相等,证明已经匹配到最后一个字符,即完全匹配
if (j == (int)temp.length())
{
return (i - (int)temp.length()); //返回匹配的第一个字符下标
}
else
return -1;
}
int main() {
string str = "abcdefg";
int num = BF(str, "ab");
cout << num;
system("pause");
}