題目描述:
判斷一個整數是否是迴文數。迴文數是指正序(從左向右)和倒序(從右向左)讀都是一樣的整數。
示例 1:
輸入: 121 輸出: true
示例 2:
輸入: -121 輸出: false 解釋: 從左向右讀, 爲 -121 。 從右向左讀, 爲 121- 。因此它不是一個迴文數。
示例 3:
輸入: 10 輸出: false 解釋: 從右向左讀, 爲 01 。因此它不是一個迴文數。
解題思路:
首先,負數和10的倍數不是迴文數。
然後,將該數字翻轉。
最後,比較翻轉之後的數字和原來的數字是否相等,如果相等則是迴文數,如果不相等則不是迴文數。
class Solution {
public:
bool isPalindrome(int x) {
//判斷示例2和示例3這種類型
if(x < 0 || x > 0 && x % 10 == 0) return false;
//處理示例1類型
long originValue = x;
long res = 0;
while(x != 0){
res = res*10+x%10;
x/=10;
}
return originValue == res;
}
};
總結:對於迴文類問題一個常用的解決思路就是將其翻轉,然後和原來的進行比較,如果相等則表示爲迴文,如果不相等則不是迴文。這種方法只需遍歷一次就夠,時間複雜度和空間複雜度都是O(n)。是一種不錯的方法。