资讯专栏INFORMATION COLUMN

7. Reverse Integer

tianren124 / 1165人阅读

摘要:题目链接思路因为中的数字是没有的,即取决于电脑的内存。不过题目有额外要求,假设我们只能处理的数字区间。所以需要另外加一个判断。另外,内置的函数可以把转换成数字。数字要注意区分正负。负数反转还是负数。

题目链接:Reverse Integer

思路
因为Python中的数字是没有overflow的,即limit取决于电脑的内存。不过题目有额外要求,假设我们只能处理
32-bit signed 的数字区间。 所以需要另外加一个判断。另外,Python内置的int()函数可以把 "001" 转换成数字 1。

数字要注意区分正负。负数反转还是负数。对于Python来说,有两种解法:

可以把数字转换成字符串反转然后转换回数字

可以把反转的数字乘以10加上x % 10,x每次除以10直到0为止

算法复杂度
Pythonic:

时间:O(x)
空间:O(n) where n is the length of x

一般方法:

时间:O(logx) 
空间:O(n) where n is the length of x

代码

Pythonic Approach

class Solution(object):
    def reverse(self, x):
        """
        :type x: int
        :rtype: int
        """
        if x < 0:
            minus_sign = str(x)[0]
            abs_x = abs(x)
            res = minus_sign + str(abs_x)[::-1]
            if int(res) > 2**31-1 or int(res) < -2**31:
                return 0
            else:
                return int(res)
        else:
            if int(str(x)[::-1]) > 2**31-1 or int(str(x)[::-1]) < -2**31:
                return 0
            else:
                return int(str(x)[::-1])

一般方法

class Solution(object):
    def reverse(self, x):
        """
        :type x: int
        :rtype: int
        """
        sign = 1 if x > 0 else -1
        x = abs(x)
        t = 0
        while x:
            t = t*10 + x % 10
            x  //= 10
        t = t * sign
        if t > 2**31-1 or t < -2**31:
            return 0
        else:
            return t


文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/41951.html

相关文章

  • Leetcode 7 Reverse Integer 倒序整数

    摘要:原题目为难度此题让我们输出给定一个整数的倒序数比如倒序为倒序为但是如果倒序的过程中发生整型溢出我们就输出倒序不复杂关键在于如何判定将要溢出最终的程序如下其中是获取的个位数字判定下一步是否将要溢出使用 原题目为: Reverse digits of an integer.Example1: x = 123, return 321Example2: x = -123, return -3...

    LoftySoul 评论0 收藏0
  • leetcode 7 Reverse Integer

    摘要:题目详情题目要求我们给出一个数的翻转数想法这道题主要的坑就是在于一个数值的输入,在进行翻转操作之后,不一定还符合的范围,可能会造成异常。我们可以通过每次获得整数除的余数,来确定当前整数的最后一位。 题目详情 Given a 32-bit signed integer, reverse digits of an integer.题目要求我们给出一个数的翻转数 Example 1:Inpu...

    microelec 评论0 收藏0
  • Leetcode 第7Reverse Integer

    摘要:判断溢出这里使用了中的类整数类,缩写就是的静态变量和,就能直接得到整型变量可表示数值的上下限。当结果不在此范围内时,则溢出,并返回否则返回正常结果。 要点 这一题的要点有三个: 接收长度不同的数字并翻转 判断结果是否溢出 解决方法 翻转:为了能够接收不同长度的数字进行反转操作,我们使用循环结构进行操作。(注:这里创建的sum变量一定要用long类型而不能用int,原因是采用int...

    liaoyg8023 评论0 收藏0
  • [Leetcode] Reverse Integer 反转整数

    摘要:字符串法复杂度时间空间思路先将数字转化为字符串,然后将字符串倒序输出,并转回数字。模十法复杂度时间空间思路通过对数字模十取余得到它的最低位。除了检查溢出返回特定值以外,有没有别的方法处理溢出可以使用代码块排除异常。 Reverse Integer Reverse digits of an integer.Example1: x = 123, return 321Example2: x ...

    ad6623 评论0 收藏0
  • 【LeetCode Easy】007 Reverse Integer

    摘要:第一时间想到这是经典的取模取余运算,但是写的过程中遇到了很多问题这么简单一题基础做法取一个整数的最后一位数字只要把这个整数就可以,要取除最后一位数字之外的其它数字只要是没有长度函数的,需要转化成才能使用长度函数用这个方法最大的难点在 Easy 007 Reverse Integer Description: Given a 32-bit signed integer, reverse ...

    Sourcelink 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<