方法一:
转换成字符串进行翻转、用栈等等暴力方法。
方法二:
将数字整体翻转进行判断。
public boolean isPalindrome(int x) {
int tmp;
int res = 0;
for (tmp = x; tmp > 0; tmp /= 10) {
res = res * 10 + tmp % 10;
}
if (res == x) {
return true;
} else {
return false;
}
}
方法二:
进行部分数判断。
偶数位:(偶数比较方便)
将前二分之n位数组成新的数,与剩下的数进行比较判断。
奇数位:
和偶数想法一样,但是中位数需要额外一步/10进行消除。
public boolean isPalindrome(int x) {
if (x < 0 || (x % 10 == 0 && x != 0)) {
return false;
}
int num = 0;
while (x > num) {
num = num * 10 + x % 10;
x /= 10;
}
return num == x || num / 10 == x;
}
特殊情况:
1.x<0有负号,必然不是回文数
2.当x的第一位是0,那么若要满足回文数要求,只能是0
这两种可以提前做判断。
接着按上述偶数进行处理,直到最后判断,当前x<=num,若偶数位直接判断,奇数位需要给num一步/10取出多获取的中位数。