美文网首页
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