题目描述:给定s1,s2两个字符串,要求判定s2是否能够被s1做循环移位得到的字符串包含。
思路:类似于面试金典字符串那一节最后一题,字符串拼接的思路,将s1 = s1+s1,这样只要能够移位得到包含s2那么就肯定在拼接后的s1中
1 #include <iostream> 2 #include <string> 3 #include <fstream> 4 #include <map> 5 #include <algorithm> 6 #include <vector> 7 #include <ctime> 8 #include <bitset> 9 #include <stack> 10 #include <deque> 11 #include <stdexcept> 12 #include <memory> 13 14 using namespace std; 15 16 int main() 17 { 18 string s1,s2; 19 cin>>s1>>s2; 20 if(s2.length() > s1.length()) 21 cout<<"false"<<endl; 22 else 23 { 24 s1 = s1+s1; 25 int i; 26 for(i = 0 ; i <= s1.length()-s2.length() ; ++i) 27 { 28 string tmp = s1.substr(i,s2.length()); 29 cout<<tmp<<" "<<s2<<endl; 30 if(tmp == s2) 31 { 32 cout<<"true"<<endl; 33 return 0; 34 } 35 } 36 cout<<"false"<<endl; 37 } 38 return 0; 39 }