Reverse Integer
- 知识点
- 32位有符号整型的取值范围是
[−2^31, 2^31 − 1]
具体到python中的表现就是:type(pow(2, 31))
是 long类型。注意如果是type(pow(2, 31)/2)
仍为long类型. - n次方:
2** 31
或pow(2, 31)
- 绝对值函数
abs
- 字符串反转
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:
- x=123, y=0
- x=12, y=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