题目:
代码:
class Solution {
public boolean isPalindrome(int x) {
if(x < 0|| (x % 10 == 0) && (x != 0)){
return false;
}
int A = 0;
while(x > A){
A = A*10 + x%10;
x/=10;
}
return x == A || x == A/10;
}
}
思路:
首先,小于0的数不是回文数,并且个位数为0的数字也不是回文数(因为高位不能为0)。0是回文数。
在大于0的数字中分为奇数个数字和偶数个数字。
不论是奇数个还是偶数个,都可以先使用%运算符求出其最低位,在利用/消去其最后一位数。并且在while运算中,将原本的最低位乘10与得到的低位相加,循环反复。
例如12321,在最后,会得到12与123;如果是1221的则会得到12与12.这个时候,只要将最后的return语句写成 上方第13行代码即可。因为奇数个数字的情况下,将其/10直接将123变为12.