LeetCode 9 迴文數

題目描述:

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

示例 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)。是一種不錯的方法。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章