Clockwise Or Unclokwise
题目描述
我们把一个字符串A按圆圈排列,你可以从圆圈上任意一个字符开始,顺时钟或者逆时钟读若干个字符,请问是否能得到给定的字符串B?比如字符串A="abcde",我们从第2个字符开始,逆时钟读3个字符,可以得到字符串"bae"。
输入
第一行是样例数T(1≤T≤100)。 每个样例的占两行,第一行是字符串A,第二行是字符串B,所有字符串都只含小写英文字母,且长度不超过100个字符。
输出
每行输出一个样例的结果,如果可以输出"Yes",否则输出"No"。
样例输入
5 abcde cbae abcde deab abc abcabc abcb babcba ab aa
样例输出
Yes Yes Yes Yes No
#include <stdio.h>
#include <string.h>
int main()
{
int n;
scanf("%d",&n);
while(n--)
{
int j=0,i=0,k,flag,s=0;
char a[101],b[101];
scanf("%s%s",&a,&b);
int len=strlen(a);
int len1=strlen(b);
for(i=0;i<len;i++)
{
flag=1;
k=i;
for(j=0;j<len1;j++)
{
if(b[j]!=a[k])
{
flag=0;
break;
}
k++;
if(k==len)
k=0;
}
if(flag==1)
{
printf("Yes\n");
s=1;
break;
}
}
if(s==0)
{
for(i=0;i<len;i++)
{
flag=1;
k=i;
for(j=0;j<len1;j++)
{
if(b[j]!=a[k])
{
flag=0;
break;
}
k--;
if(k<0)
k=len-1;
}
if(flag==1)
{
printf("Yes\n");
break;
}
}
if(flag==0)
{
printf("No\n");
}
}
}
return 0;
}