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; }

浙公网安备 33010602011771号