判斷一個整數是不是迴文數。迴文數是指正序(從左向右)和倒序(從右向左)讀都是同樣的整數。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