塞进裤子ヾ(≧O≦)〃嗷~

0%

leetcode-7整数反转

最初想法:

方法一:转string,再转回int,注意负号和0,好像有点麻烦

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#耗时有点长
class Solution(object):
def reverse(self, x):
"""
:type x: int
:rtype: int
"""
if x==0:
return 0
absx= abs(x)
strx = str(absx)
strx = strx[::-1]
strx = strx.lstrip('0') #去除开头的0
result = int(strx)
if x < 0:
if result > pow(2, 31):
return 0
return result*(-1)
if result > pow(2,31)-1:
return 0
return result

方法二:取余除以10

1
2
3
4
5
6
7
abs(x),

abs%10得到x的个位数a,res = res*10+a;

(abs/10)%10得到x的十位数b,res = res*10+b;

注意判断res是否溢出

官方:

1
2
3
result*10+pop 可能会溢出。所以要提前判断下
如果result*10 + pop > intMax;那么result > (intMax-pop)/10 ;
如果result*10 + pop < intMin;那么result < (intMin-pop)/10 ;

注意:python和c++关于负数取余方式不一样

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class Solution(object):
def reverse(self, x):
"""
:type x: int
:rtype: int
"""
intMax, intMin = 2**31-1, -2**31
result= 0
while x != 0:
pop = -(abs(x)%10) if x< 0 else x % 10
x = int(x/10)
#判断是否溢出
if result> (intMax-pop)/10:
return 0
if result < (intMin-pop)/10:
return 0
result = result*10 + pop #这一步可能发生溢出
return result

力扣上的要用python3执行,python2不知道啥原因

if help:小手一抖点个广告 or 大手一挥资助一下