Description
如果一个字符串从中间或者某一个字符处断开,离断开点的距离相同的字符如果是相同的或者是大小写关系的话,我们称这种字符串为“回文串”。比如:“abcba”,从“c”处断开,对应的字符依次是b,a,所以为回文串;“abba”从第一个“b”后断开,对应的字符依次是b,a,所以也是回文串。请写一个程序,判断一个字符串是否为回文串。 输入 第一行是一个整数N,表示有多少个字符串,以后每行一个字符串,字符串只含有英文字母,最长不超过100个字符。 输出 每行输出一个对应的结果,如果对应行为回文串输出“YES”,否则输出“NO”。
Sample Input
5
abbcbc
abbcbba
aa
bab
Aa
Sample Output
NO
YES
YES
YES
YES
注意点
1、记得判断大小写。
2、第二个代码里面记得是小于len/2。
代码1
#include <stdio.h>
#include <string.h>
int main()
{
int n, i, j, len;
char a[101];
scanf("%d", &n);
while (n--)
{
scanf("%s", a);
len =strlen(a);
int c = 0;
for (i = 0, j = len-1 ; i<=j; i++, j--)
{
if (a[i]-a[j]!=32&&a[i]-a[j]!=(-32)&&a[i]!= a[j])
{
c = 1;
break;
}
}
if (c) printf("NO\n");
else printf("YES\n");
}
return 0;
}
代码2
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
char s[101],c[101],tmp;
scanf("%d",&n);
while(n--){
scanf("%s",s);
int len=strlen(s);
for(int i=0;i<len;i++){
if(s[i] >= 'A' && s[i] <= 'Z') s[i]=s[i]-'A'+'a';
}
strcpy(c,s);
int last=len-1;
for(int i=0;i<len/2;i++){
tmp=s[i];
s[i]=c[last];
c[last]=tmp;
last--;
}
if(!strcmp(s,c)){
printf("YES\n");
}
else{
printf("NO\n");
}
}
return 0;
}