LeetCode之整数反转

该文章介绍了LeetCode上的整数反转问题,强调了解题时需要注意的边界条件,如整数的符号、末尾零以及反转后是否超出32位整数范围。解决方案是将整数转换为字符串,使用双指针进行反转,然后检查结果是否在合法范围内。
摘要由CSDN通过智能技术生成

7. 整数反转 - 力扣(LeetCode)icon-default.png?t=N176https://leetcode.cn/problems/reverse-integer/

题目:

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

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

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

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/reverse-integer
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。


思路:

首先要注意以下两点:

1. 题目中输入的参数是“整数型”,且给出了反转后整数的范围限制

2. 反转的数字可能有哪几种特殊情况?

(这里提出问题2,是因为自己做题的时候只按照题目所给的一部分特殊情况而考虑问题,而没有自己思考其他可能出现的特殊情况,在提交后往往会报错,报错后只能不断查缺补漏,根据未通过项目补写代码。如果只出现一次错误还好,可能是自己没有考虑全面。但多次查缺补漏后还会出现“意料之外”的内容,就是问题了。因此要养成在做题之前考虑清楚每一步骤、特殊情况之后再开始动笔的好习惯。例如这道题,我在做的时候就因为读题不准确,以为只需要限制输入整数的大小即可)

1)整数型有可能是负数;

2)数字最末尾可能是0;

3)反转后的整数可能会超出范围;

解题步骤:

1. 输入的是整数型,但我需要遍历该数字,如何解决?

将整数型转为字符串。我用的是python,在转换成字符串之后又新建了一个空列表来放置字符串。尝试过直接在字符串内进行调换,报错(可能是由于个人技术有限导致的,也可能是python不支持这一做法)

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

        strx = str(x)
        list1 = []
        for i in strx:
            list1.append(i)

2. 设置左右指针,并判断第一个字符是否为负号:

left = 0
right = len(list1) - 1
if list1[left] == "-":
    left += 1

3.  遍历开始:

while left < right:
    list1[left], list1[right] = list1[right], list1[left]
    left += 1
    right -= 1

4. 将列表转换为字符串:

s = ""
for i in list1:
    s += i

5. 将字符串转换为整数型,并判断转换后整数的大小:(不需要关注0)

intx = int(s)
if intx > 2**31 - 1 or intx < -2**31 or intx == 0:
    return 0
else:
    return intx

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值