循环子串-题解

描述

肥肥鲨想去水族馆,但是没带钱买门票,于是方馆长给它出了一个难题,只要肥肥鲨能答对,它就能进水族馆,现在请你们帮助肥肥鲨。

给定两个字符串s1和s2,要求判定其中一个字符串是否是另一个字符串通过若干次循环移位后的新字符串的子串。

例如CDAA是由AABCD两次移位后产生的新串BCDAA的子串,而ABCD与ACBD则不能通过多次移位使得其中一个字符串是新串的子串。
这里的移位只能是将整体往左移或往右移,移出的元素会拼接到结尾或开头;

如果一个字符串是另一个字符串通过若干次循环移位产生的新串的子串,则输出true否则输出false。

输入描述

一行,包含两个字符串,中间由单个空格隔开。

字符串只包含字母和数字,长度不超过30

输出描述

按题意输出

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <bits/stdc++.h>
using namespace std;

int main(){
string a,b;
cin >> a >> b;
if(a.size()<b.size()){
swap(a,b);
}
a = a+a;
if(a.find(b) == string::npos){
cout << "false";
}else{
cout << "true";
}
return 0;
}

循环子串-题解
https://chenxi-tijie.pages.dev/2025/07/循环子串-题解/
作者
chenxi
发布于
2025年7月5日
许可协议