题目地址
第一次一遍过,超100%,打卡纪念,无难度,关键是开long
class Solution {
public boolean isPalindrome(int x) {
if(x < 0) return false;
long re = 0;
long mirror = x;
while(mirror > 0) {
re *= 10;
re += mirror % 10;
mirror /= 10;
}
return x == re;
}
}
看了题解,发现其实long可以不需要,我们可以折半,考虑到回文的对称性,只要前一半与后一半的逆序相同即可
class Solution {
public boolean isPalindrome(int x) {
if(x < 0 || (x % 10 == 0 && x != 0)) return false;
int re = 0;
while(x > re) {
re *= 10 ;
re += x % 10;
x /= 10;
}
return re == x || re/10 == x;
}
}
0结尾预判掉的原因是,如果不预判,如10,结果是x = 0,re = 01, 根据 re/10 == x得出true。