链接
题目描述
对于一个字符串来说,定义一次循环移位操作为:将字符串的第一个字符移动到末尾形成新的字符串。
给定两个字符串 s1 和 s2,要求判定其中一个字符串是否是另一字符串通过若干次循环移位后的新字符串的子串。例如 CDAA 是由 AABCD 两次移位后产生的新串 BCDAA 的子串,而 ABCD 与 ACBD 则不能通过多次移位使得其中一个字符串是新串的子串。(是字串输出true,否则输出false)
样例输入
AABCD CDAA
样例输出
true
思路
就模拟呗
代码
#include<algorithm>
#include<iostream>
#include<cstring>
#include<string>
#include<cstdio>
#include<cmath>
using namespace std;
string s1, s2;
int main()
{
cin>>s1>>s2;
int len1 = s1.size(), len2 = s2.size();
if(len1 < len2) {
string t = s1;
s1 = s2;
s2 = t;
}
int len = s1.length();
for(int i = 0; i < len; ++i)
{
char z = s1[0];
s1 = s1.substr(1, len);
s1 += z;
if(s1.find(s2, 0) != -1)
{
printf("true");
return 0;
}
}
printf("false");
return 0;
}