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;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值