19:字串移位包含問題

自為風月馬前卒發表於2017-03-07

19:字串移位包含問題

總時間限制: 
1000ms
 
記憶體限制: 
65536kB
描述

對於一個字串來說,定義一次迴圈移位操作為:將字串的第一個字元移動到末尾形成新的字串。

給定兩個字串s1和s2,要求判定其中一個字串是否是另一字串通過若干次迴圈移位後的新字串的子串。例如CDAA是由AABCD兩次移位後產生的新串BCDAA的子串,而ABCD與ACBD則不能通過多次移位來得到其中一個字串是新串的子串。

輸入
一行,包含兩個字串,中間由單個空格隔開。字串只包含字母和數字,長度不超過30。
輸出
如果一個字串是另一字串通過若干次迴圈移位產生的新串的子串,則輸出true,否則輸出false。
樣例輸入
AABCD CDAA
樣例輸出
true
 1 #include<iostream>
 2 #include<cstring>
 3 #include<cstdio>
 4 #include<cmath>
 5 using namespace std;
 6 string a,b,c,d;
 7 int main()
 8 {
 9     cin>>a>>b;
10     c=a+a;
11     d=b+b;
12     if(c.find(b)!=-1&&b.size()<=a.size())
13     {
14         cout<<"true";
15         return 0;
16     }
17     if(d.find(a)!=-1&&a.size()<=b.size())
18     {
19         cout<<"true";
20         return 0;
21     }
22     cout<<"false";
23     return 0;
24 } 

注意:兩個字串相加可以得到所有情況!!!!!!!!!!!!!1

 

相關文章