Python版[leetcode]7. 整数反转(难度简单)

Posted davidlidvd

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python版[leetcode]7. 整数反转(难度简单)相关的知识,希望对你有一定的参考价值。

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

示例 1:

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

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

输入: 120
输出: 21
注意:

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

 

这道题可以用到python的字符串反转[::-1],非常方便,只要处理一下溢出以及负数即可

class Solution:
    def reverse(self, x: int) -> int:
        if x < 0:
            x = 0-int(str(0-x)[::-1])
        else:
            x = int(str(x)[::-1])
        return x if abs(x)< 2147483648 else 0

当然因为python操作方便讨巧了,实际算法应该是要用到类似栈的思想,栈先进后出,在栈顶做插入和删除操作

class Solution:
    def reverse(self, x: int) -> int:
        """
        :type x: int
        :rtype: int
        """
        x_list = list(str(x))
        res_stack = []
        is_minus = False  # 用于处理负数
        
        while x_list:
            v = x_list.pop()
            if v == -:
                is_minus = True
                continue
            res_stack.append(v)
        res = int(‘‘.join(res_stack))
        
        if is_minus:
            res *= -1
        
        # 边界条件
        v_max = 0xffffffff/2
        if res > (v_max -1) or res < (v_max*(-1)):
            res = 0
            
        return res

这里使用list来模拟栈,用pop来选择最后一个元素加入到新的list中

 

以上是关于Python版[leetcode]7. 整数反转(难度简单)的主要内容,如果未能解决你的问题,请参考以下文章

Leetcode 7.反转整数 By Python

LeetCode 第7题 整数反转

LeetCode7.整数反转(Python3)

C++&Python 描述 LeetCode 7. 整数反转

LeetCode 第七题--整数反转

LeetCode:反转整数(C语言版)