LeetCode OJ: 9. Palindrome Number 迴文數字

若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。

題目連結 https://leetcode.com/problems/palindrome-number/

此題和高中生程式解題系統的 a022: 迴文 類似,不過此題處理的是數字。

小於零的都不是迴文數字。

此題會用到a038: 數字翻轉的技巧:


但只需要翻轉到一半即可。也就是當翻轉後的數字大於原來的數字時,即可結束迴圈,要注意邊界條件。

程式碼:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
class Solution {
public:
    bool isPalindrome(int x) {
        // 小於零,或是個位數為零都不會是迴文
        if(x < 0 || (x % 10 == 0 && x != 0)) {
            return false;
        }

        // 翻轉後的數字
        int rNum = 0;
        while(x > rNum) {
            rNum = rNum * 10 + x % 10;
            x /= 10;
        }
        
        return x == rNum || x == rNum/10;
    }
};

沒有留言: