9.leetCode 回文数

比对后半部与前半部就可以了

那我们有一个问题  如何求 他的位数

  int length = (int) (Math.log(number) / Math.log(10) + 1);

log的底数是固定的假设为a  a经历多少次计算可以进位  Math.log(10)

然后a经历过多少次计算可以达到 number   Math.log(number)     所以我们用  Math.log(number) / Math.log(10) 

就可以算出number的位数   为什么+1 呢  因为我们没算个位

更简单的方法是变成字符串算位

但是效率低还占内存  

所以我们的最终结果为

 public static boolean isPalindrome(int number) {
        if (number < 0) {
            return false;
        }
            int length = (int) (Math.log(number) / Math.log(10) + 1);
        int rever = 0;
        int pop = 0;
        for (int i = 0; i < length / 2; i++) {
            pop = number % 10;

            rever = rever * 10 + pop;
            number/=10;
        }
        if ((length & 1) == 0 && number == rever) {
            return true;
        }
        if ((length & 1) == 1 && number / 10 == rever) {
            return true;
        }

        return false;
    }

 

posted @ 2021-09-24 15:21  OTeam  阅读(47)  评论(0)    收藏  举报