回文数(题号:9)

2019-10-27  本文已影响0人  Bug之王

可以取数字的最高位和最低位进行对比,如果相等的话,将数字的最高位和最低位“削”去,循环对比。
比如121,最高位为1,最低位为1,相等,然后“削”去最高位最低位变为2,最高位为2,最低位也为2,相等“削”去最高位和最低位变为0,结束,返回true。
如何确定最高位的数字?找到小于该数字的最大的10的幂div,然后除以div。

public boolean isPalindrome(int x) {
        if(x < 0) {
            return false;
        }
        
        int div = 1;
        while(x / div >= 10) {
            div *= 10;
        }
        System.out.println(div);
        
        while(x > 0) {
            int high = x / div;
            int low = x % 10;
            if(high != low) {
                return false;
            }
            x = (x - (div * high)) / 10;
            div /= 100;
        }
        return true;
        
    }
上一篇 下一篇

猜你喜欢

热点阅读