【Leetcode】7. 整数反转(Reverse Integer)

No7. 整数反转

题目

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

注意:

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

示例 1

  • 输入:x = 123
  • 输出:321

示例 2

  • 输入:x = -123
  • 输出:-321

示例 3

  • 输入:x = 120
  • 输出:21

示例 4

  • 输入:x = 0
  • 输出:0

提示

  • -231 <= x <= 231 - 1

解题代码(Python3)

class Solution:
    def reverse(self, x: int) -> int:
        if str(x)[0] == '-':
            res = -int(str(x)[-1:0:-1])
        else:
            res = int(str(x)[::-1])
        return res if -2**31 <= res < 2**31 else 0

思路:

首先判断开头字符是否为‘-’,然后按情况分别使用切片进行倒序排列,在开头有负号是要在res前补上一个负号,在最后对res的范围进行判别,若越界则返回0。

复杂度分析:

  • 时间复杂度O(n) 因为使用了列表的切片
  • 空间复杂度O(1)

运行结果:

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Xiao_Spring/article/details/113666628