力扣刷题day006——整数反转

目录

1.题目描述

2.题目分析

3.代码实现

4.一丢丢吐槽


1.题目描述

给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。

如果反转后整数超过 32 位的有符号整数的范围 [−231,  231 − 1] ,就返回 0。

假设环境不允许存储 64 位整数(有符号或无符号)。

2.题目分析

读题课知,给的是有符号的整数x,要求得这个数反转后的数,但不改变正负

所以可以想到将x里面的数一个一个取出来,然后放到一个我们设定的字符串里面去,最后加上符号的方法

3.代码实现

class Solution:  

    def reverse(self, x: int) -> int:  

        #取x的绝对值,确保后续反转时不会因为符号问题出错  

        y = abs(x)  

        #初始化一个变量res用于存储反转后的结果  

        res = 0  

        max_x = 2 ** 31 - 1  #正数的最大值  

        min_x = 2 ** 31    #负数的最小值(注意这里用不用加上负号,我们把符号留到最后判断)

        boundary = max_x if x > 0 else min_x  

        while y != 0:  

            #取出y的个位数,并加到res中

            res = y % 10 + res * 10  

            #如果反转后的结果res大于边界值,说明溢出,直接返回0  

            if res > boundary:  

                return 0  

            #无符号右移4位等价于y //= 10,即去掉y的个位数  

            y //= 10  

        return res if x > 0 else -res

4.一丢丢吐槽

虽然学习起来好难,但是黯冽,要坚持住鸭!

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值