渣渣的Leetcode之旅(Python3)_7.整数反转(简单)

给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。

示例1:
输入: 123
输出: 321

示例2:
输入: -123
输出: -321

示例3:
输入: 120
输出: 21

注意:
假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。

class Solution:
    def reverse(self, x: int) -> int:
        a = []
        middle=0
        if x>=0 and x <=9:
            return x
        if x > 0:
            middle=1     # middle为1代表最后返回正数
        else:
            x=-1*x     # middle 为0代表最后返回负数

        # 2^31-1=2147483647,-2^31=-2147483648
        while True:
            a.append(x%10)
            x=x/10
            x = int(x)
            if x<10:
                a.append(x)
                x=0
                break

        if len(a) == 10 and a[0] > 2:
            return 0
        if len(a) > 10:
            return 0
        
        dummp=1
        for i in range(0,len(a)):
            for j in range(i,len(a)-1):
                dummp=dummp*10
            x+=a[i]*dummp
            dummp=1

        if middle == 1:
            if x > 2147483647:
                return 0
            else:
                return x  
        if middle == 0:
            x=-1*x
            if x <  -2147483648:
                return 0
            else:
                return x

 

在这里插入图片描述

Tips:
在c语言里,123/10 = 12
但在python里,123/10 = 12.3

posted @ 2020-10-15 15:11  336699强强  阅读(136)  评论(0编辑  收藏  举报