栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

7.整数反转---python3

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

7.整数反转---python3

题目:

给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。
如果反转后整数超过 32 位的有符号整数的范围 [−2^31, 2^31 − 1] ,就返回 0。
假设环境不允许存储 64 位整数(有符号或无符号)。

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

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/reverse-integer

方法1:

没做过题的小白做法:

#python3
class Solution:
    def reverse(self, x: int) -> int:
        arr= set()
        def f(s:str):
            if s.find('0')==0:
                if len(s)==1:
                    return s
                for i in range(1,10):
                    if s.find(str(i))!=-1:
                        arr.add(s.find(str(i)))
                    else:
                        continue
                return s[list(arr)[0]:len(s)]
            else:
                return s
        if x<=0:
            x=-1*x
            s=str(x)
            s = s[::-1]
            f(s)
            a=int(s)
            a=-1*a
            if a<-2147483648:
                return 0
            else:
                return a
        else:
            s=str(x)
            s=s[::-1]
            f(s)
            if int(s)>2147483647:
                return 0
            else:
                return int(s)

首先判断x是否小于零,如果小于0则先将其转化为正数,然后再转化为字符串类型,并将字符串s反转后将字符串作为参数传进reverse函数中 reverse函数判断字符串的首部是否为0,如果是0,则需要将字符串从第一个不为0的数开始一直到字符串尾部将其返回,方法是创建一个用于存放下标的数组,在s中将其找到所有不为0的下标存入数组,然后找到下标数组的最小值就是第一个不为零的正数,因为set函数会自动排序,故取出第一个元素即为最小下标。

例如5302500反转后为0052035,依次存入的下标为3 5 2 自动排序后为2 3 5即返回从第三个元素开始到字符串末尾的字符串s:52035

s=Solution()
print(s.reverse(5302500))
输出:52035

如果x为负数 则从s经过reverse函数后结果要变为负数并与题目要求的-2^31比较大小。

方法2:

看了题解后才发现用数学方法就不到10行代码能做出来:

#python3
def reverse2(self, x: int) -> int:
    a = abs(x)
    n = 0
    while a != 0:
        n = n * 10 + a % 10
        a = a // 10
    if n > 2147483647 or n > 2147483648:
        return 0
    return n if x > 0 else -n

这个做法是先取绝对值,进行取模、取整、相加运算就能轻松做出来,也不需要用数组来耗费大量空间。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/314048.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号