7. 整数反转——python版(做题解析)

题目:
给你一个 32 位的有符号整数 x ,返回 x 中每位上的数字反转后的结果。

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

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

示例 1:
输入:x = 123
输出:321

class Solution(object):
    def reverse(self, x):
        """
        :type x: int
        :rtype: int
        """
        chars = list(str(x))
        if x < 0 :
            chars.remove('-')
            chars.reverse()
            r = ''.join(chars)
            r = - int(r)
        else:
            chars.reverse()
            r = ''.join(chars)
            r = int(r)

        if not -pow(2,31) <= r <= pow(2,31) -1:
            return 0
        return r

解题思路:python中不能直接将整数进行转化,需要转化为字符串,再倒回整数。

重点解析
1.list(str(x)):是将x的实数通过字符串的方式拆分开来进行存储
2.chars.remove(’-’):从字符串中删除负号方便后续倒序排列
3.r = ‘’.join(chars):这一步的目的是将保存在chars之中的字符串通过添加’ ‘的方式连接在一起,所以在’'之间不写入东西。不进行这步操作,会发现进行数字化时原来的chars中存储的是列表保存的数字
4.pow(2,31):所表示的是2的31次方
处理结果
在这里插入图片描述

在第一次尝试的过程中容易忽略负数的问题导致反转出现错误,需要将正负数分开处理。而正是因为这样导致代码之中存在一段重复叙述,希望后续能够有所改进。
来源:力扣(LeetCode)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值