LeetCode刷题(python版)——Topic7整数反转

一、题设

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

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

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

二、基本思路

1.将输入的整数转换成字符列表,按有‘-’、末尾有‘0’、输入为0讨论,逆置这个字符列表,再合并为一个字符串返回即可

2.若有‘-’号,则将转换的范围避开‘-’所在列表下标;末尾有'0'则通过除法除掉,输入为0直接返回0

三、代码实现

class Solution(object):
    def reverse(self, x):
        #若输入为0,直接返回
        if x == 0:
            return x
        #刨去转换后开头的0
        while x%10==0:
            x=x/10
        #整数转化成字符列表
        lis =list(str(x))
        #处理开头为0 以及 '-'的问题
        lens = len(lis)
        left = 0
        #处理'-'问题
        if lis[0]=='-':
            left = 1
        #逆置列表
        right = lens - 1
        while(left < right):
            temp = lis[left]
            lis[left] = lis[right]
            lis[right] = temp
            left += 1
            right -= 1
        #合并字符列表lis成一个串res
        res = eval("".join(lis))
        #判断是否超范围
        if res < -pow(2,31) or res > pow(2,31)-1:
            return 0
        return res

        

四、效率总结

        效率从反馈来说还是相对可以的,唯一可以改进的地方是逆置循环,可以通过对折来实现,空间效率会更高。这道题让我知道了字符串不好拿出单个的字符,要转换成列表存放单个字符才会有对应下标。其次数字转字符串用str()函数,字符串合并用X.join()函数,字符串转数字用eval()函数。总体来说还是比较简单的,那今天就到这儿啦,明天见~

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值