Palindromes _easy version
Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other)
Total Submission(s) : Accepted Submission(s) :
Problem Description
“回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。请写一个程序判断读入的字符串是否是“回文”。
Input
输入包含多个测试实例,输入数据的第一行是一个正整数n,表示测试实例的个数,后面紧跟着是n个字符串。
Output
如果一个字符串是回文串,则输出"yes",否则输出"no".
Sample Input
4
level
abcde
noon
haha
Sample Output
yes
no
yes
no
首先要理解题目,可见这是一个字符串的问题,通过比较对称的字符是否相同即可。
strlen是计算字符串长度的函数,sizeof是是长度运算符, 获得数据类型或是变量的长度。
代码如下:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
int n,k,a,m=0;
char str[10001];
scanf("%d",&n);
getchar();//隔开scanf和gets的输入
while(n--)
{
k=0;
gets(str);
a=strlen(str);//求str中字符的个数和sizeof区别开来。
//printf("%d\n",a);
if(a%2)
{
for(int i=0,j=a-1;i<(a-1)/2,j>(a-1)/2;i++,j--)
if(str[i]!=str[j])
{k=1;break;}//break跳出for循环。
if(k==1)//用k的值来验证是否出现不相等的情况。
printf("no\n");
if(k==0)
printf("yes\n");
}
else
{
for(int i=0,j=a-1;i<a/2,j>=a/2;i++,j--)
if(str[i]!=str[j])
{k=1;break;}
if(k==1)
printf("no\n");
if(k==0)
printf("yes\n");
} memset(str,0,sizeof(a));//可有可无吧,memset将str[]初始化。
}
return 0;
}