Problem Description
“回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。现在呢,就是让你判断输入的字符串是否是回文串。
Input
有多组输入,每行输入一串字符,保证字符串长度不会大于 100000,字符串由大小写英文字母和空格组成,以字符串“2013”作为结束标志。
Output
每行输出一个字符串,如果输入是回文串,输出“YES”,否则输出“NO”(注意:判断的时候空格是不作判断的,详见样例)。
Sample Input
aaaa
ggg g
lozxvxoMJBCHsTXooXTsHCBJMoxvxzol
i am a good acmer
2013
Sample Output
YES
YES
YES
NO
代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{char a[100005];
int len,cn;
while(gets(a)!=NULL)
{
if(strcmp(a,"2013")==0)
break;
else{
len=strlen(a);
char *p=a,*q=a+len-1;
while(p<q)
{
if(*p==' ')
p++;
else if(*q==' ')
q--;
else if(*p==*q)
{
p++;
q--;
cn=1;
}
else if(*p!=*q)
{cn=0;break;}
}
if(cn==0)
{
printf("NO\n");
}
else printf("YES\n");
}
}
return 0;
}
else 和 else if 的区别
多个if是所有的if都会进行判断
if else if是只要有满足条件的,就不再对之后的else if进行判断
比如
a = 2;
if(a1) c=1;
if(a2) c=2;
if(a%20) c=3;
最终结果c=3
a=2;
if(a1) c=1;
else if(a2) c=2;
else if(a%20) c=3;
最终结果c=2