题目描述
对于一个字符串来说,定义一次循环移位操作为:将字符串的第一个字符移动到末尾形成新的字符串。
给定两个字符串
s1
和
s2
,要求判定其中一个字符串是否是另一字符串通过若干次循环移位后的新字符串的子串。例如
CDAA
是由
AABCD
两次移位后产生的新串
BCDAA
的子串,而
ABCD
与
ACBD
则不能通过多次移位来得到其中一个字符串是新串的子串。
一行,包含两个字符串,中间由单个空格隔开。字符串只包含字母和数字,长度不超过30
输出格式如果一个字符串是另一字符串通过若干次循环移位产生的新串的子串,则输出true,否则输出false。
样例样例输入
AABCD CDAA
样例输出
true
数据范围与提示
分类标签
[字符串] [枚举] [普及/提高-]
C++题解代码
#include <bits/stdc++.h>
using namespace std;
string a;
string b;
int c;
bool d;
// The main procedure
int main() {
cin>>a;
cin>>b;
for (int i = 0; i < a.size(); i++) {
d = true;
for (int j = 0; j < b.size(); j++) {
c = ((i+j)%a.size());
if (a[c] != b[j]) {
d = false;
break;
}
}
if (d) {
break;
}
}
if (d) {
cout<<"true";
} else {
cout<<"false";
}
return 0;
}
Blockly题解代码图片