回文串问题
Time Limit:1000MS Memory Limit:65535K
题型: 编程题 语言: 不限定
描述
对于一个串ABCD,规定可以将左边的一个字符移到右边,得到BCDA,同理再操作一次,得到CDAB。现有一个串AABB,不是回文串, 但只要将左边的一个字符移到右边,就成为了回文串,同理BAABC,操作两次,成为回文串。问,给定一个串,经过多次这样的操作 是否能成为回文串。能则输出Y, 否则输出N。
输入格式
全由大写字母构成的一个串,最多不超过80个字符(请使用scanf("%s", ......)读取)
输出格式
Y或N
输入样例
ABC
输出样例
N
#include <stdio.h>
#include <string.h>
int func(char *s)
{
int l=strlen(s),i;
for (i=0;i<l/2;i++)
{
if (s[i]!=s[l-i-1])
{
return 0;
}
}
return 1;
}
int main()
{
char a[81],temp;
scanf("%s",a);
int l=strlen(a),i,j;
int k=0,f;
for (i=0;i<l;i++)
{
temp=a[0];
for (j=0;j<l-1;j++)
{
a[j]=a[j+1];
}
a[l-1]=temp;
f=func(a);
if (f==1)
{
k=1;
break;
}
}
if (k==1)
{
printf("Y\n");
}
else
{
printf("N\n");
}
return 0;
}