Crack LeetCode 之 9. Palindrome Number
阿新 • • 發佈:2018-12-16
這一題巧妙運用取餘和除法運算來取十進位制數字的高位和低位。之前我還想到過把數字轉為字串,然後再檢查,但是這樣效率比較低。以下為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