class Solution {
public boolean isPalindrome(int x) {
int cur = 0;
int z;
z = x;
// 判断是不是负数,或者是末尾为0的整数,比如10,100,肯定不是回文数,且要排除 0
if (x < 0 || (x%10 == 0 && x != 0) )
return false;
// 当 x 为 12321 时,cur 比起 x 大的时候,退出 while 循环,这样只用判断一半即可
while(z != 0) {
cur = cur * 10 + x % 10;
z /= 10;
}
return cur == x;
}
}
第二种解法
判断该数的一半,若是偶数,则需判断后面部分和前面部分是否相等即可
若是奇数,则把后面的一部分 /10 然后进行判断
class Solution {
public boolean isPalindrome(int x) {
int cur = 0;
// 判断是不是负数,或者是末尾为0的整数,比如10,100,肯定不是回文数,且要排除 0
if (x < 0 || (x%10 == 0 && x != 0) )
return false;
// 当 x 为 12321 时,cur 比起 x 大的时候,退出 while 循环,这样只用判断一半即可
while(x > cur) {
cur = cur * 10 + x % 10;
x /= 10;
}
// 若 x 为偶数,则判断后面的一半和前面的一半是否相等
// 若 x 为奇数,因为上面的条件是 cur 大于 x 时退出,所以判断 cur/10 与 x 的值是否相等
return x == cur || x == cur / 10;
}
}