整数反转

题目:给出一个32位的有符号整数,将这个整数种每位上的数字进行反转。

例: 输入:123,输出:321

例:输入-123,输出:-321

例:输入120,输出:21

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

解题思路:

对当前数值进行对10去余数,再填入result尾部,即可以完成数字反转。

问题点:

​ 边界情况处理:int取值范围[-231, 231 - 1],如果出现反转数字溢出,则立即return 0。每次计算完后,判断result和int取值范围的大小关系

python的坑:由于python的//操作时向下取整,导致正负数取于%操作结果不一致。因需要把原数字转为正数进行操作。

代码如下:

class Solution:
    def reverse(self, x: int) -> int:
        result = 0
        temp = abs(x)
        int_x = (1 << 31) - 1 if x > 0 else 1 << 31
        while temp != 0:
            pop = temp % 10
            result = result * 10 + pop 
            if result > int_x: 
                return 0
            temp //= 10
        return result if x>0 else -result

输入

123

输出

321

差别

预期结果

321

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容