回文数(来源LeetCode)
给你一个整数 x ,如果 x 是一个回文整数,返回 ture ;否则,返回 false 。
回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。
示例1:
输入:x = 121
输出:true
输入:x = -121
输出:false
解释:从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
思路:
1.所有负数都不是回文数
2.对于非负数,先将数字逆序,然后对比
3.数字逆序过程中,考虑溢出情况
4.32位数字范围是-32768~32767
代码:
bool isPalindrome(int x) {
int res = 0;
int p = x;
if(x<0){
return false;
}
while(p!=0){
int temp = p%10;
if(res>INT_MAX/10||(res==INT_MAX/10 && temp>7)){
return false;
}
if(res<INT_MIN/10||(res == INT_MIN/10) && temp>8){
return false;
}
res = res*10 + temp;
p = p/10;
}
if (x==res){
return true;
}
else{
return false;
}
}