若一个串正向看和反向看等价,则称做回文串。例如:t,abba,xyzyx均是回文串。 给出一个长度不超过60的字符串,判断是否是回文串。
输入格式:
首先输入一个正整数T,表示测试数据的组数,然后是T组测试数据。每行输入一个长度不超过60的字符串(串中不包含空格)。
输出格式:
对于每组测试数据,判断是否是回文串,若是输出“Yes”,否则输出“No”。引号不必输出。
输入样例:
2
abba
abc
输出样例:
Yes
No
#include <stdio.h>
#include <string.h>
#define N 60
int main() {
int T;
scanf("%d",&T);
while(T--) {
char ch[N];
scanf("%s",ch);
int i,len = strlen(ch);
bool flag = true;
for(i = 0; i<len/2; i++) {
if(ch[i] != ch[len-1-i]) {
flag = false;
}
}
if(flag) {
printf("Yes\n");
} else {
printf("No\n");
}
}
return 0;
}
有用记得采纳哟
供参考:
#include <stdio.h>
#define N 61
int main()
{
int T;
char s[N],*p,*q;
scanf("%d",&T);
while(T--){
scanf("%s",s);
p = s;q = s;
while(*q) q++;
q--;
while(p < q){
if(*p != *q) break;
p++;q--;
}
if(p >= q)
printf("Yes\n");
else
printf("No\n");
}
return 0;
}
bool isPalindrome(char * s){
int i = 0,j = 0;
while(s[i]){
if(s[i] >= 48 && s[i] <= 57)
s[j++] = s[i];
else if(s[i] >= 65 && s[i] <= 90){
s[i] += 32;
s[j++]= s[i];
}
else if(s[i] >= 97 && s[i] <= 122)
s[j++] = s[i];
i++;
}
int left = 0,right = j - 1;
while(left < right){
if(s[left] != s[right])
return false;
left++;
right--;
}
return true;
}
int main()
{
int t,n,i=0,j=0,k=0,flag=0;
char s[60];
scanf("%d",&t);
getchar();
for(i=0;i<t;i++)
{
flag=0;
gets(s);
flag =bool isPalindrome(s);
puts(s);
if(flag)
printf("NO\n");
else printf("YES\n");
}
return 0;
}