Leetcode練習 #9 Palindrome Number


題目簡析:題意是判斷一個數字是否爲迴文數字,迴文的定義自然是和迴文字符串意思一樣啦,不過數字不是字符串,不能很隨意地取出首位末位等對稱位置的字符進行比較,當然轉換成字符串再比較也是一個方案,不過題目有空間限制,而且這樣效率也比較低。因此我的思路是對數字實現一個“逆轉”操作,將逆轉後數字與原輸入數字對比,若一樣,自然說明了這個數字是迴文數字。

 

       那麼如何實現逆轉呢?這裏我們設定2個數字,一個num1,一個num2num1是輸入數字,num2暫時是0,但最後我們會讓它變成num1的逆轉數字。

       首先我們觀察這個“逆轉的過程”,假設num1=12321

num1: 12321 -> 1232  -> 123  ->   12   ->      1    ->       0

num2:     0     ->    1     ->  12   ->  123  ->  1232  ->   12321

 

顯然,實現逆轉的操作很簡單,只要不斷對num1取除以10的餘數(num1%10)把獲得的餘數添加到num2(num2=num2*10+餘數)並對num1減一位(num1/10)不斷重複這個過程即可

 

下面附上代碼

class Solution {
public:
    bool isPalindrome(int x) {
        if(x<0)
            return false;
        else if(x<10)
            return true;
        
        
        int num1=x;
        int num2=0;
        int n;
        while(num1>0){
            n=num1%10;
            num2=num2*10+n;
            num1=num1/10;
        }
        
        return (num2==x);
    }
};


Submission Result: Accepted

Runtime: 0 ms


題目鏈接:https://leetcode.com/problems/palindrome-number/description/


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