// 利用BF算法检测l2是否为l1的子串
// l1 为主串
// l2 为子串
// 函数返回 1 = true,0 = false
int BF(string l1, string l2) {
int length = 0;
for (int j =0; j <l1.size(); j++)
{
if (l1.at(j) == l2.at(0)) // l1 第 j 位和 l2 头相同
{
length = 1;
if (l1.size() - j < l2.size())
return 0;
for (int i = 1; i < l2.size(); i++) // l1 第 j 位后是否存在和l2后面相同的部分
{
if (l1.at(j+i) == l2.at(i))
++length;
}
}
}
return length == l2.size() ? 1 : 0; //根据length判断l2是否为l1子串
}
int main()
{
string l1, l2;
cout << "please input the main string: ";
cin >> l1;
cout << endl;
cout << "please input the sub-string: ";
cin >> l2;
cout << endl;
int status = BF(l1, l2);
string result;
result = status ? "true" : "flase";
cout << result << endl << endl;
system("pause");
return 0;
}