1 #include <iostream>
2 #include <string>
3 using namespace std;
4
5 int BF(const string& father, const string& son) //傳回首次比對的字元串中的第一個比對的字元的下标
6 {
7 int i = 0, j = 0; //i表示主串下标,j表示子串下标
8 while (i < father.size() && j < son.size())
9 {
10 if (father[i] == son[j])
11 {
12 //i與j偏移相同的長度
13 ++i;
14 ++j;
15 }
16 else
17 {
18 i = i - j + 1; //i回溯到上次比較的下一個字元的下标處,進而繼續與子串重新比較
19 j = 0; //j變回初始下标0
20 }
21
22 }
23 if (j == son.size())
24 return i - j;
25 else
26 return -1;
27
28 }
29
30 int main()
31 {
32 string father = "12774578";
33 string son = "74";
34 cout << BF(father, son);
35
36 return 0;
37 }