题目
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
实现
方法一:
public boolean isPalindrome(int x) {
if (x == 0){
return true;
}
int mid_res = 0;
int give_x = x;
if (x < 0 || x % 10 == 0){
return false;
}
while (x > 0){
mid_res += x % 10;
x /= 10;
if (x > 0){
mid_res *= 10;
}
}
return mid_res == give_x;
}
方法二:
//将整数分成分成左右两个部分,然后将右边部分顺序逆置一下,判断左右两个部分是否相同
public boolean isPalindrome2(int x) {
if (x == 0) {
return true;
}
if (x < 0 || x % 10 == 0) {
return false;
}
int right = 0;
while (x > right) {
right = right * 10 + x % 10;
x /= 10;
}
// 因为整数有奇数位和偶数位两种情况,所以这里进行了或运算
// 因为上面的while循环的结束条件是x<=right,如果原有的整数一共是奇数位,那么
// 最终x一定小于right,所以此时不能直接用x和right是否相等判断左右两个部分是否相等
// 而是先将right除以10,将奇数位整数的中间位给去掉再判断
return x == right || x == right / 10;
}