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