9. 迴文數

判斷一個整數是不是迴文數。迴文數是指正序(從左向右)和倒序(從右向左)讀都是同樣的整數。spa

示例 1:code

輸入: 121
輸出: true

示例 2:blog

輸入: -121
輸出: false
解釋: 從左向右讀, 爲 -121 。 從右向左讀, 爲 121- 。所以它不是一個迴文數。

示例 3:io

輸入: 10
輸出: false
解釋: 從右向左讀, 爲 01 。所以它不是一個迴文數。

個人答案:
 1 class Solution {
 2     public boolean isPalindrome(int x) {
 3         if (x < 0)
 4             return false;
 5         
 6         int res = 0;
 7         int n = x;
 8         while (n != 0) {
 9             res = n % 10 + res * 10;
10             n = n / 10;
11         }
12         
13         if(res == x) 
14             return true;
15         else
16             return false;
17         
18     }
19 }

答案存在bug:若是數字太大,反轉超過Interge.MAX,則出了問題class

迴文序列只須要判斷一半就能夠了。bug

 

官方答案di

 1 public class Solution {
 2     public bool IsPalindrome(int x) {
 3         if(x < 0 || (x % 10 == 0 && x != 0)) {
 4             return false;
 5         }
 6 
 7         int revertedNumber = 0;
 8         while(x > revertedNumber) {
 9             revertedNumber = revertedNumber * 10 + x % 10;
10             x /= 10;
11         }
12 
13         return x == revertedNumber || x == revertedNumber/10;
14     }
15 }
相關文章
相關標籤/搜索