#include <iostream>
#include<string>
using namespace std;
//bf算法检索
int find(string s1, string s2, int i);
int find(string s1, string s2, int i)
{
if (s2.size() <= s1.size() && (s1.size() - i + 1) >= s2.size())
{
for (int a = i-1; a < s1.size() - s2.size() + 1; a++)
{
int re = 0;
for (int m = a, n = 0; n < s2.size(); m++, n++)
{
if (s1[m] == s2[n])
re++;
}
if (re == s2.size())
return a+1;
}
return 0;
}
return 0;
}
int main()
{
string s1, s2;//s1为主串 s2为子串
cin >> s1;
cin >> s2;
int i = find(s1, s2, 1);
cout << i;
}
第二种
#include <iostream>
#include<string>
using namespace std;
//bf算法检索 穷举
int find(string s1, string s2, int a);
int find(string s1, string s2, int a)
{
if (s2.size() <= s1.size() && (s1.size() - a + 1) >= s2.size())
{
int i =a-1 , j = 0;
while (i <s1.length() && j < s2.length())
{
if (s1[i] == s2[j])//若当前位置匹配则后移
{
i++;
j++;
}
else//若不匹配则回溯 前移
{
i = i - j + 1;
j = 0;
}
}
if (j = s2.length())
return i - j + 1;
return 0;
}
return 0;
}
int main()
{
string s1, s2;//s1为主串 s2为子串
cin >> s1;
cin >> s2;
int i = find(s1, s2, 1);
cout << i;
}