题目描述
给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。
回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。
来源:力扣(LeetCode)
链接:LeetCode
题目分析
(1)与整数反转一样,回文数也需要反转,但是并不需要全部反转,由于回文数是对称的,因此当循环进行到一半时,即可判断是不是回文数;
(2)但是也要分两种情况,奇数位数和偶数位数,比如121和1221,这两种情况是不太一样的,因为121划分成一半去处理,可能只处理了12,此时在最后判断时,要把这种情况考虑进去,具体如代码。
代码
class Solution {
public boolean isPalindrome(int x) {
if(x<0||x!=0&&x%10==0) return false;
//特殊情况,先排除
int reverseNumber=0;
//用作回文处理
while(reverseNumber<x){//当处理到一半时退出循环,判断回文数
reverseNumber=reverseNumber*10+x%10;
x=x/10;
}
if(x==reverseNumber||x==reverseNumber/10) return true;
//如果是121这种情况,则退出时x=1,而reverseNumber=12,故要考虑/10
else return false;
}
}