1. 程式人生 > >Crack LeetCode 之 9. Palindrome Number

Crack LeetCode 之 9. Palindrome Number

這一題巧妙運用取餘和除法運算來取十進位制數字的高位和低位。之前我還想到過把數字轉為字串,然後再檢查,但是這樣效率比較低。以下為C++的程式碼和python的程式碼,時間複雜度是O(n),空間複雜度是O(1)。

struct Solution {
    bool isPalindrome(int x) {
        if (x < 0)
            return false;

        int div = 1;
        while (div <= x / 10)
            div *= 10;

        while (x > 0) {
            if (x / div != x % 10)
                return false;

            x = (x%div) / 10;
            div /= 100;
        }

        return true;
    }
};
class Solution:
    def isPalindrome(self, x):
        if x < 0:
            return False

        div = 1
        while div <= int(x/10):
            div = div * 10

        while x>0 :
            if (x%10) != int(x/div):
                return False
            
            x = int((x%div)/10)
            div = int(div / 100)

        return True