题目描述
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
示例 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;
}
};
来源:CSDN
作者:DUT_Walnut
链接:https://blog.csdn.net/DUT_Walnut/article/details/103987464