LeetCode 9. Palindrome Number ( C )-Easy
Posted On 2021 年 5 月 7 日
題目為給定一個整數 ( Int ),判斷他是不是迴文的結構。
Given an integer x, return true if x is palindrome integer.
An integer is a palindrome when it reads the same backward as forward. For example, 121 is palindrome while 123 is not.
Example 1:
Input: x = 121
Output: true
Example 2:
Input: x = -121
Output: false
Explanation: From left to right, it reads -121. From right to left, it becomes 121-. Therefore it is not a palindrome.
Example 3:
Input: x = 10
Output: false
Explanation: Reads 01 from right to left. Therefore it is not a palindrome.
Example 4:
Input: x = -101
Output: false
Constraints:
-231 <= x <= 231 - 1
Follow up: Could you solve it without converting the integer to a string?
我的解題方法為,先判別是否為負數,如果是負數就回傳 false。再把整數依序取出位數,反過來存到另一個整數裡,假設最後比較兩個整數相等就回傳 true,反之 false。
下方為我的程式碼
bool isPalindrome(int x){ if(x<0) return false; else if(x == 0) return true; else{ int temp = x,reverse = 0; while(temp!=0){ if(reverse>214748364) return false; reverse*=10; if(reverse > INT_MAX-(temp%10)) return false; reverse += temp%10; temp/=10; } if(reverse == x) return true; else return false; } }
下方為時間與空間之消耗
Runtime: 8 ms, faster than 68.63 % of C online submissions for Palindrome Number.
Memory Usage: 5.7 MB, less than 95.04 % of C online submissions for Palindrome Number.