判断一个整数是不是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是同样的整数。java
例子1算法
输入: 121 输出: true
例子2spa
输入: -121 输出: false 解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。所以它不是一个回文数。
例子3code
输入: 10 输出: false 解释: 从右向左读, 为 01 。所以它不是一个回文数。
class Solution { public boolean isPalindrome(int x) { // 负数,个位是0的数,不知足条件 if(x < 0 || (x % 10 == 0 && x != 0)) return false; int n = 0; // 这个循环用于将x的一半放到n中,当n比x大的时候就中止循环 while (x > n) { // 算法题07中用到的n*10进位,x%10取个位数,x/=10丢弃个位 n = n * 10 + x % 10; x /= 10; } // 若是x是偶数个数,x == n则x是回文字,若是x是奇数个数,x == n / 10,去掉n的个位,判断是否相等 return x == n || x == n / 10; } }
若是x=12321,那么在通过循环后,x=12,n=123,最后12 == 123/10io
这道题主要仍是运用了%10,*10和/=10class
取x的一半放到n中,则能够减小循环次数。循环
时间复杂度:O(log10(n))时间
空间复杂度:O(1)while