美文网首页Leetcode刷题笔记
第三十六天 Reverse Integer

第三十六天 Reverse Integer

作者: 业余马拉松选手 | 来源:发表于2018-09-28 00:33 被阅读4次

今天去有一场技术分享,回家后整个人都有点累
继续坚持着刷一道题

https://leetcode-cn.com/problems/reverse-integer/description/

其实也是我在面试经常愿意问的一道题,把一个数字逆置

思路就是不断取余和整除10

里面需要注意符号和取值范围,算法本身不复杂,要能一次bug free才是本事!

最先用了一种转字符串的方法,有点丑

class Solution:
    def reverse(self, x):
        """
        :type x: int
        :rtype: int
        """
        strRet = ""
        ret = 0
        flag = False
        if x < 0:
            x = abs(x)
            flag = True
        while x > 0:
            strRet += str(x%10)
            x = x//10
        if strRet == "":
            return 0
        if flag:
            ret = int(strRet) * -1
        else:
            ret = int(strRet)
        if ret > 2**31-1 or ret < -1*2**31:
            return 0
        else:
            return ret

这段代码太硬了,就有了一个优化点的方案,算法的思路并没有变,只是改了下语法和实践方法

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

相关文章

网友评论

    本文标题:第三十六天 Reverse Integer

    本文链接:https://www.haomeiwen.com/subject/jofuoftx.html