[leetcode刷题(easy)]之二: 整数反转

题目描述

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

示例 1:

输入: 123
输出: 321

 示例 2:

输入: -123
输出: -321

示例 3:

输入: 120
输出: 21

注意:

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

我的代码:

class Solution(object):
    def reverse(self, x):
        """
        :type x: int
        :rtype: int
        """

        if -2**31 < int(x) < 2**31-1:
            if int(x) == 0:
                return 0
            a = str(x)
            b = list(a)
            rb = ''
            while True:
                if b[-1] == '0':
                    del b[-1]
                else:
                    break        
            if b[0] == '-':
                rb += '-'
                for j in range(1,(len(b))):
                    rb += b[-j]
            else:
                for m in range(1,(len(b)+1)):
                    rb += b[-m]
            if -2**31 < int(rb) < 2**31-1:
                return rb
            else:
                return 0  
        else:
            return 0

while True:
    c = input("Please enter the number:")
    if str(c) == 'quit':break
    if not c:
        print("输入不能为空!")
        continue
    t = Solution()
    print(t.reverse(c))

猜你喜欢

转载自blog.csdn.net/weixin_41931548/article/details/89005117