题目描述
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
示例 1:
输入: 121
输出: true
示例 2:
输入: -121
输出: false
解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
示例 3:
输入: 10
输出: false
解释: 从右向左读, 为 01 。因此它不是一个回文数。
进阶:
你能不将整数转为字符串来解决这个问题吗?
简单分析
显然负数不是回文数,同时小于十的自然数为回文数,不转换为字符串时可以将当前整数进行倒序,看看是否和原数一致,一致的话就是回文数。此时特殊考虑边界值2147483647,显然不是回文数。
代码
class Solution {
public:
bool isPalindrome(int x) {
if(x<0||x==2147483647){
return false;
}
else if(x>=0&&x<10){
return true;
}
int tmp = x;
int num = 0;
while(tmp!=0){
num = tmp%10+num*10;
tmp = tmp /10;
}
if(x == num){
return true;
}
return false;
}
};
本文介绍了一种判断整数是否为回文数的算法,通过实例详细解析了正序与倒序读取相同的整数特性。文章提供了C++代码实现,包括特殊边界值的处理,以及不转换为字符串的解决方案。
2万+

被折叠的 条评论
为什么被折叠?



