chaper3_exerise_Uva10340_子字串

 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]) {            //结束条件是,其中一个字符串到达了'\0' 
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 }

 

posted @ 2016-06-14 17:49  douzujun  阅读(226)  评论(0编辑  收藏  举报