1. 程式人生 > >3.反轉整數-leetcode 007(python)

3.反轉整數-leetcode 007(python)

  • 題目描述

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

  • 示例1

輸入: 123 輸出: 321

  • 示例2

輸入: -123 輸出: -321

  • 示例3

輸入: 120 輸出: 21

  • 注意

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

  • 解決方案

使用分片操作[ : : -1] 翻轉列表或字串

  • 程式碼一
class Solution(object):
    def reverse(self, x):
        """
        :type x: int
        :rtype: int
        """
        l = list(str(x))
        n = len(l)
        
        #尋找最靠後的不是0的數字
        for i in range(n-1,0,-1):
            if l[i] != '0':
                l = l[:i+1]
                break
            
        #如果是負數的話,反轉之後要加上符號
        if l[0] == '-':
            l = l[:0:-1]
            l.insert(0,'-')
        else:
            l = l[::-1]
        x = int(''.join(l))
        
        #check the number
        if x<2147483648 and x >-2147483648:
            return x
        else:
            return 0
        
  • 程式碼二
class Solution(object):
    def reverse(self, x):
        """
        :type x: int
        :rtype: int
        """
       
        if x > 0:
            t_str = str(x)[::-1]
            t = int(t_str)
        else:
            t_str = str(-x)[::-1]
            t = -int(t_str)

        if t< 2147483648 and t >-2147483648:
            return t
        else:
            return 0