题目描述
对于一个字符串来说,定义一次循环移位操作为:将字符串的第一个字符移动到末尾,形成新的字符串。
给定两个字符串s1和s2,要求判定其中一个字符串是否是另一个字符串通过若干次循环移位后的新字符串的子串,例如CDAA是由AABCD两次以为后产生的新船BCDAA的字串,而ABCD与ABCD则不能通过多西移位使得其中一个字符串是新串的子串。
输入格式
一行,包含两个字符串,中间由单个空格隔开。字符串只包含字母和数字,长度不超过30.
输出格式
如果一个字符串是另一个字符串通过若干次移位产生的新串的子串,则输出true,否则输出false
输入样例 复制
AABCD CDAA
输出样例 复制
true
完整代码
#include<bits/stdc++.h>
using namespace std;
int main(){
//freopen("/config/workspace/test/test","r",stdin);
string s1,s2;
cin>>s1>>s2;
if(s2.length()>s1.length()){
string temp=s1;
s1=s2;
s2=temp;
}
s1+=s1;
//下面这句写到if里有点小bug,先算再判断就没问题
int k=s1.find(s2);
if(k>=0){
cout<<"true"<<endl;
}else{
cout<<"false"<<endl;
}
return 0;
}