回文数(力扣第9题)

题目

判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。

实现

方法一:
    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;
    }
原文地址:https://www.cnblogs.com/yxym2016/p/13986518.html