1. 程式人生 > >反轉整數 python程式設計

反轉整數 python程式設計

給定一個 32 位有符號整數,將整數中的數字進行反轉。

示例 1:

輸入: 123
輸出: 321

 示例 2:

輸入: -123
輸出: -321

示例 3:

輸入: 120
輸出: 21

注意:

假設我們的環境只能儲存 32 位有符號整數,其數值範圍是 [−2**31,  2**31 − 1]。根據這個假設,如果反轉後的整數溢位,則返回 0。

程式碼:

class Solution(object):
    def reverse(self, x):
        """
        :type x: int
        :rtype: int
        """
        #32位有符號整數的範圍
        MAX_INT = 2**31-1
        MIN_INT = - 2**31

        #檢查輸入是否超過32位有符號整數的範圍
        if x > MAX_INT or x < MIN_INT:
            return 0
        
        # 如果x能夠被10整除,則需要消除末尾的0,否則翻轉到前面沒有意義
        if x%10 == 0 and x != 0:
            while x%10==0:
                x = x//10
                
        #x的符號sign
        sign_x = 1
        if x < 0:
            sign_x = -1
            
        # 不論x是正是負,統一轉化為正數來處理,處理後再轉化過來輸出   
        x = sign_x * x
        reverse_integer = 0
        while x != 0:
            reverse_integer = x%10 + reverse_integer*10
            x = x//10

        reverse_integer = reverse_integer*sign_x
        # 檢查輸出是否超過32位有符號整數的範圍
        if reverse_integer > MAX_INT or reverse_integer < MIN_INT:
            return 0
        return reverse_integer