标签:
给定两个字符串s1,s2,要求判定s2是否能够被s1做循环移位得到的字符串包含。
例如,
给定s1=AABCD和s2=CDAA,返回true;
给定s1=ABCD和s2=ACBD,返回false。
法一:直接循环移位,用strstr()比较
1 #include <iostream>
2 #include <string>
3 using namespace std;
4
5 bool Check(char src[], char des[]);
6
7 int main()
8 {
9 char src[] = "AABBCD";
10 char des[] = "CDAA";
11
12 bool res = Check(src,des);
13 if(res)
14 cout<<"true"<<endl;
15 else
16 cout<<"false"<<endl;
17
18 return 0;
19
20 }
21
22 bool Check(char src[], char des[])
23 {
24 char temp = src[0];
25 bool res = false;
26 for(int i=0; i<strlen(src); ++i)
27 {
28 for(int j=0; j<strlen(src)-1;++j)
29 {
30 src[j] = src[j+1];
31 }
32 src[strlen(src)-1] = temp;
33
34 if(strstr(src,des) != NULL)
35 res = true;
36 }
37 return res;
38 }
法二:s2必然在s1s1之中,用空间换取时间。
标签:
原文地址:http://www.cnblogs.com/Big-Rabbit/p/4404187.html