题目描述
读入一串字符,判断是否是回文串。“回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。
输入
一行字符串,长度不超过255。
输出
如果是回文串,输出“YES”,否则输出“NO”。
样例输入
12321
样例输出
YES
一开始这样写的,,虽然很繁琐zz,但感觉应该没错,然鹅没有通过~
#include<cstdio>
#include<cstring> //这里要使用strlen()函数,所以引入
int main(){
char str[256];
int flag;
scanf("%s",str);
for(int i=0,j=strlen(str)-1;i<strlen(str),j>=0;i++,j--){
if(str[i]==str[j])
flag++;
}
if(flag==strlen(str))
printf("YES");
else
printf("NO");
}
简化修改,pass~,主要是判断一半即可,利用数组的下标索引啊,不要zz的遍历完。。。
#include<cstdio>
#include<cstring>
int main(){
char a[256];
scanf("%s",a);
int len=strlen(a);
int flag=1;
for(int i=0;i<len/2;i++){
if(a[i]!=a[len-i-1]){
flag=0;
break;
}
}
printf("%s",flag==1? "YES":"NO" );
}
最后参照《算法笔记》,感觉写出函数更加好一些哎~
- 掌握性xin知识: 程序执行到return就返回,不再执行这个后面的内容,或者返回执行结果 !!!
#include<cstdio>
#include<cstring>
const int maxn=256;
bool judge(char str[]){
//判断字符串是否为回文串
int len=strlen(str);
for(int i=0;i<len/2;i++){
if(str[i]!=str[len-1-i]){
return false;
}
}
return true;
//这里有一点要注意!
//程序执行到return就返回,不再执行这个后面的内容,或者返回执行结果
}
int main(){
char str[maxn];
while(gets(str)){ //输入字符串
bool flag=judge(str);
if(flag==true)
printf("YES");
else
printf("NO");
}
return 0;
}