美文网首页
LeetCode 7. Reverse Integer

LeetCode 7. Reverse Integer

作者: 索毅 | 来源:发表于2019-02-17 12:26 被阅读0次

    Reverse Integer

    • 知识点
    1. 32位有符号整型的取值范围是[−2^31, 2^31 − 1] 具体到python中的表现就是:type(pow(2, 31)) 是 long类型。注意如果是type(pow(2, 31)/2)仍为long类型.
    2. n次方:2** 31pow(2, 31)
    3. 绝对值函数abs
    4. 字符串反转a[::-1]
    反转字符串的方式
    class Solution(object):
        def reverse(self, x):
            """
            :type x: int
            :rtype: int
            """
            abs_out = int(str(abs(x))[::-1])
            out_x = abs_out if x>0 else -abs_out
            if out_x < -pow(2, 31) or out_x > pow(2, 31) - 1:
                return 0
            return out_x
    
    只使用整数的方式:

    x是出栈的操作,y是入栈的操作
    先从最简单的例子入手:123:

    1. x=123, y=0
    2. x=12, y=3
    3. x=1(pop = x%10 x=x/10), y=32 (y * 10+pop)

    因而得到结论

    pop = x % 10;
    x /= 10;
    y = 10 * y + pop

    class Solution(object):
        def reverse(self, x):
            """
            :type x: int
            :rtype: int
            """
            # 模拟一个栈
            if x < 0:
                return -self.reverse(-x)
            y = 0
            while x > 0:
                pop = x % 10
                x = x / 10
                y = y * 10 + pop
            if y < -0x7FFFFFFF or y > 0x7FFFFFFF - 1:
                return 0
            return y
    

    相关文章

      网友评论

          本文标题:LeetCode 7. Reverse Integer

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