1. 程式人生 > 其它 >07-整數反轉

07-整數反轉

題目:

給你一個 32 位的有符號整數 x ,返回將 x 中的數字部分反轉後的結果。

如果反轉後整數超過 32 位的有符號整數的範圍[−2^31, 2^31− 1] ,就返回 0。

示例:

輸入:x=-123

輸出:-321

程式碼:

Min=-2**31
Max=2**31-1

class Solution:
    # 普通方法
    def reverse(self,x):
        tag=1
        y=0
        if x<0:
            tag=0
            x=-x
        while x%10!=0 or x//10!=0:
            y=y*10+x%10
            x=x//10
        if tag==0:
            y=-y
        if Min>y or Max<y:
            return 0

        return y
    # 優化解
    def reverse2(self,x):
        y=abs(x)
        res=0
        # 設定邊界
        boundry=1<<31-1 if x>0 else 1<<31
        while y!=0:
            res=res*10+y%10
            y//=10
            if res>boundry:
                return 0
        return res if x>0 else -res

solution=Solution()
x=15934
y=solution.reverse2(x)
print(y)