对于一个字符串来说,定义一次循环移位操作为:将字符串的第一个字符移动到末尾形成新的字符串。
给定两个字符串 �1s1 和 �2s2,要求判定其中一个字符串是否是另一字符串通过若干次循环移位后的新字符串的子串。例如 CDAA
是由 AABCD
两次移位后产生的新串 BCDAA
的子串,而 ABCD
与 ACBD
则不能通过多次移位来得到其中一个字符串是新串的子串。
输入
一行,包含两个字符串,中间由单个空格隔开。字符串只包含字母和数字,长度不超过 3030。
输出
如果一个字符串是另一字符串通过若干次循环移位产生的新串的子串,则输出 true
,否则输出 false
。
样例
输入 1复制
AABCD CDAA
输出 1复制
true
#include<bits/stdc++.h>
using namespace std;
char a[201],b[201],t[201],x[201];
int main()
{
int i,j;
cin>>a>>b;
if(strlen(a)<strlen(b)){
strcpy(t,a);
strcpy(a,b);
strcpy(b,t);
}
strcpy(x,a);
if(strstr(strcat(a,x),b)==NULL){
cout<<"false";
}
else{
cout<<"true";
}
return 0;
}
输入
AABCD CDAA
输出
true
Good