本文主要是介绍Gem Necklace湘潭大学月赛题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目描述
一串项链由不同颜色的宝石串成,我们用不同的英文字母表示这些不同颜色的宝石。如果两串项链从顺时针或者逆时针方向数,其每颗宝石颜色是相同,我们称这两串项链是相同的。请写一个程序判断两串项链是否相同。
输入
第一行是一个整数K,表示样例的个数(K等于10000)。每个样例占两行,为两个字符串。字符串只含大写英文字母,长度不超过10000。
注:其中9950组数据满足字符串长度小于100。
输出
每行输出一个样例的结果,如果相同输出Yes,否则输出No。
样例输入
5
ABA
BAA
AABBC
CBBAA
AABBC
AACBB
ABC
ABB
BBC
BC
样例输出
Yes
Yes
Yes
No
No
AC代码:
#include<string>
#include<algorithm>
#include<string.h>
#include<iostream>
#include<cstdio>
using namespace std;
int main()
{ int t;cin>>t;while(t--){ string s,s1;cin>>s;cin>>s1;int flag=0,i;int k=s1.find(s[0]);while(k!=string::npos){ int k1=k;for(i=1;i<s.size();++i){ k1++;if(k1>=s1.size()) k1%=s1.size();if(s1[k1]==s[i]) continue;else break;}if(i==s.size()) {flag=1;break;}k1=k;for(i=1;i<s.size();++i){ k1--;if(k1<0) k1+=s1.size();if(s1[k1]==s[i]) continue;else break;}if(i==s.size()) {flag=1;break;}k=s1.find(s[0],k+1);}if(flag) cout<<"Yes"<<endl;else cout<<"No"<<endl;}return 0;
}
这篇关于Gem Necklace湘潭大学月赛题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!