题目描述
我们把一个字符串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 t,i,j,k,len,lena,num,flag;
char str[102],stra[105];
scanf("%d",&t);
while(t--)
{
flag = 0;
scanf("%s",stra);
scanf("%s",str);
lena = strlen(stra);
len = strlen(str);
for(i = 0;i<lena;i++)
{
num = 0;
for(j = 0,k = i;j<len&&k<lena;j++,k++)
{
if(str[j]!=stra[k])
break;
else
{
num++;//相同的个数
if(k==lena-1)
k = -1;
}
}
if(num==len)
flag = 1;
}
if(flag==0)
{
for(i = lena-1;i>=0;i--)
{
num = 0;
for(j = 0,k = i;j<len&&k>=0;j++,k--)
{
if(str[j]!=stra[k])
break;
else
{
num++;//相同的个数
if(k==0)
k = lena;
}
}
if(num==len)
flag = 1;
}
}
if(flag==1)
printf("Yes\n");
else
printf("No\n");
}
}