leetcode - 7. Reverse Integer

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
复制代码

转载于:https://juejin.im/post/5c68e3946fb9a04a0730e8f1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值