LeetCode 9. Palindrome Number ( C )-Easy

題目為給定一個整數 ( 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.

下一題連結 : LeetCode 10. Regular Expression Matching ( C )-Hard

Add a Comment

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *