给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。
回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。
示例 1:
输入:x = 121
输出:true
提示:
-231 <= x <= 231 - 1
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/palindrome-number
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解答:
class Solution {
public:
bool isPalindrome(int x) {
if (x < 0 )
{
return false ;
}
if (x == 0 )
return true ;
int temp = 0 ;
int x_t = x ;
while (x > 0 )
{
if (temp > INT_MAX /10 )
return false ;
temp *= 10 ;
temp += x%10 ;
x = x /10 ;
}
if (temp == x_t )
return true ;
else
return false ;
}
};
分析:
- 从题目分析,存在两种解题方法,一种当法是将输入整数变换成字符串,再将字符串转反转,另外一种方法就是将整数反转
- 整数反转存在很大一部分数据会超出int范围,因此需要对反转后的整数时时的判断,要求其值小于INT_MAX/10;