Problem Description
“回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。请写一个程序判断读入的字符串是否是“回文”。
Input
输入包含多个测试实例,输入数据的第一行是一个正整数n,表示测试实例的个数,后面紧跟着是n个字符串。
Output
如果一个字符串是回文串,则输出”yes”,否则输出”no”.
Sample Input
4
level
abcde
noon
haha
Sample Output
yes
no
yes
no
方法1
#include<stdio.h>
#include<string.h>
int main(){
int n,i,len,j;
char s[100];
scanf("%d",&n);
getchar();
while(n--){
gets(s);
len=strlen(s);
i=0;j=len-1;
while(i<j){
if(s[i]!=s[j])
break;
i++;
j--;
}
if(i>=j)
printf("yes\n");
else
printf("no\n");
}
return 0;
}
方法2
# include <stdio.h>
# include <string.h>
int main (void)
{
int n;
while (scanf("%d",&n)!=EOF)
{
int i,length,count;
char a[1000],b[1000];
while (n--)
{
count = 0;//每次循环必须初始化
scanf("%s",a);
length = strlen(a);//输入字符串并计算它的长度
for (i=0;i<length;i++) //把字符数组a的内容倒序赋值给b
b[i] = a[length-1-i];
for (i=0;i<length;i++)//计算a,b中相等元素的个数
if (b[i] == a[i])
count++;
if (count == length)//如果所有元素都相等则说明 a中元素倒序排列后仍相等
printf("yes\n");
else
printf("no\n");
}
}
return 0;
}