“回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。请写一个程序判断读入的字符串是否是“回文”。
Input
输入包含多个测试实例,输入数据的第一行是一个正整数n,表示测试实例的个数,后面紧跟着是n个字符串。
Output
如果一个字符串是回文串,则输出"yes",否则输出"no".
思路:用前n/2个数与后n/2个数进行比较,无需考虑n的奇偶性。
#include<stdio.h>
#include<string.h>
int main()
{
int n,i,len,j,count;
char str[10][10];
while(scanf("%d",&n) != EOF)
{
getchar(); // 用于消除回车对gets的影响
for(i=0; i<n; i++)
{
// gets(str[i]); 两种获取字符串的方式均可
scanf("%s",&str[i]);
}
for(i=0; i<n; i++)
{
count = 0; //置0
len = strlen(str[i]);
for(j=0; j<len/2; j++) //用前n/2个字符与后n/2个字符比较,不需要考虑奇偶
{
if(str[i][j]==str[i][len-1-j])
count++; //计数
}
if(count>=len/2)
printf("yes\n");
else
printf("no\n");
}
}
return 0;
}