当前位置:首页 > Python教程 > python技巧

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中

 

原文:https://www.cnblogs.com/davidlidvd/p/12250439.html


【说明】本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!

相关教程推荐

其他课程推荐