leetcode练习题·简单组——7. 整数反转(python练习)

leetcode练习题·简单组——7. 整数反转(python练习)

  • 题目+思路
    • 题目
    • 思路
  • 代码实现

                         QQ:3020889729                                                                                 小蔡

以下解题思路,仅表示个人做题思路或引荐别人的方法——如有引用我会标注出来的

题目+思路

题目

给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。
测试样例:
123
321

思路

  1. 直接处理数字的话,可能代码/时间就会长一些——就需要逐位转移到另外的一个变量上存着,然后进行比较相等
  2. 所以,这里采用数字转字符串,再转列表list——用一个新变量存起来
  3. 通过list的reverse方法,直接进行翻转——这里出现了一个问题,负数直接翻转就要出问题了,所以我们应该翻转其绝对值
  4. 接着,我们根据判断原数字>0还是<0进行负号添加的处理——接着判断溢出与否,最后返回指定的值就可以了

代码实现

主要思路还是体现在数字转字符串–>列表,然后实现简单的翻转进而必要的判断即可~

class Solution:
    def reverse(self, x: int) -> int:
        num = list(str(abs(x)))
        num.reverse()
        if x > 0:
            x = int(''.join(num))
            if x > ((2 ** 31)-1):
                x = 0
        else:
            x = -int(''.join(num))
            if x < (-(2 ** 31)):
                x = 0
        return x

你可能感兴趣的:(leetcode练习题)