字符环
Time Limit:1000MS Memory Limit:65536KB
Total Submit:562 Accepted:146
Description
字符环:就是将给定的一个字符串,首尾相连而形成的一个环。
现在我们来玩一个有趣的两人游戏:
每次甲给出两个字符串A和B,然后让乙判断字符串B是否能够被字符环A所包含.
例如,A = aabcd , B = cdaa , 那么B可以包含在A经过旋转后的字符串A’ = cdaab中.
Input
输入数据的第一行,一个正整数N,表示测试数据的组数.
对于每个数据:
首先2个正整数lengtha 和 lengthb代表字符串A和字符串B的长度。
接下来一行有两个被一个空格隔开的字符串A和B,A和B的长度如上所输入的长度。
长度的范围是1<=length<=100,并且字符串种只含有小写字母
Output
对于每组测试数据,输出只有一行
如果B字符串含在字符环A中,则输出:YES 否则输出:NO
Sample Input
2
5 4
aabcd cdaa
5 4
babcd cdaa
Sample Output
YES
NO
Hint:
aabcd 经过顺时针循环移动可以得到:aabcd-->abcda-->bcdaa-->abcda-->cdaab-->daabc
babcd 经过顺时针循环移动可以得到:babcd-->abcdb-->bcdba-->cdbab-->dbabc-->babcd
Source
解题:这么傻逼的题目居然只有这么点AC率。。。
喜欢坑爹,会出现m大于n的情况,特别要注意这个
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
1 #include <bits/stdc++.h> 2 using namespace std; 3 string a,b; 4 int main() { 5 int kase,n,m; 6 ios::sync_with_stdio(false); 7 cin>>kase; 8 while(kase--) { 9 cin>>n>>m; 10 cin>>a>>b; 11 if(m > n) { 12 puts("NO"); 13 continue; 14 } 15 a += a; 16 if(a.find(b) == a.npos) puts("NO"); 17 else puts("YES"); 18 } 19 return 0; 20 }