给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。
回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/palindrome-number
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
思路
1、很简单的,如果把整个x反转,很容易出现溢出
2、因为题目是判断回文,只需要反转半个x即可,如果后半部分不等于前半部分,则返回false
3、在进行循环前,先对一些特殊情况进行判定。如x为负数、x最后一位为0。
class Solution {
public:
bool isPalindrome(int x) {
if(x<0 || (x%10==0 && x!=0))return false;
int revertedNum=0;
while(x>revertedNum){
revertedNum=revertedNum*10+x%10;
x=x/10;
}
return x==revertedNum || x==revertedNum/10;
}
};