题目描述
读入一串字符,判断是否是回文串。“回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。
输入
一行字符串,长度不超过255。
输出
如果是回文串,输出“YES”,否则输出“NO”。
样例输入
12321
样例输出
YES
思路:
假设字符串str从下标0开始,i位对应len - 1 - i位,只要存在不同,即不是回文数;
因为回文数是正反读都一样的字符串,所以只需要遍历字符串前一半即可,而且因为从0开始,并不需要取到len/2;
代码如下:
#include <cstdio>
#include <cstring>
bool judge (char str[]) { //判断是否为回文数;
int len = strlen (str);
for (int i = 0; i < len / 2; i++) { //len / 2 - 1即完成一半;
if (str[i] != str[len - 1 - i]) return false;
}
return true;
}
int main()
{
char str[256];
while (~ scanf ("%s", &str)) {
bool flage = judge (str);
if (flage == true) printf ("YES\n");
else printf ("NO\n");
}
return 0;
}