1 #include<iostream> 2 #include<string> 3 #include<cstring> 4 using namespace std; 5 6 int Find(char *fstr, char *sstr) 7 { 8 int lenf = strlen(fstr), lens = strlen(sstr), i; 9 for (i = 0; i < lenf; i++) 10 { 11 int k = i; //搜寻从下一个字符作为首字符开始 12 int j = 0; //子串每次都从第一个字符开始 13 while (fstr[k] && sstr[j]) { //结束条件是,其中一个字符串到达了' ' 14 int _i; 15 for (_i = k; _i < lenf; _i++) { //在fstr中查找sstr[j]字符 16 if (fstr[_i] != sstr[j]) //找不到继续 17 continue; 18 else { 19 j++; k = _i; k++; break; //将找到sstr[j]字符的下一个位置赋给k,再扫描后面是否有新sstr[j] 20 } 21 } 22 if (_i == lenf) //如果找不到--如何处理---如果连一个字符都没有相同的,这个就可以得出无法得出了 23 return false; 24 } 25 if (j == lens) { 26 return true; 27 } 28 else 29 continue; 30 } 31 if (i == lenf) 32 return false; 33 } 34 35 const int maxn = 1010; 36 37 int main() 38 { 39 char s[maxn], t[maxn]; 40 cin >> s >> t; 41 if (Find(t, s)) 42 cout << "Yes" << endl; 43 else 44 cout << "No" << endl; 45 return 0; 46 }