方法一
class Solution(object):
def reverse(self, x):
"""
:type x: int
:rtype: int
"""
INT_MIN, INT_MAX = -2 ** 31, 2 ** 31 - 1
x_str = str(x)
length = len(x_str)
x_reverse = ""
if x_str[0] == '-':
x_reverse = x_str[1::]
x_reverse=x_reverse[::-1]
x2 = -1 * int(x_reverse)
if x2 < INT_MIN:
return 0
else:
x_reverse = x_str[::-1]
x2 = int(x_reverse)
if x2 > INT_MAX:
return 0
return x2
方法二
class Solution(object):
def reverse(self, x):
"""
:type x: int
:rtype: int
"""
INT_MAX, INT_MIN = 2 ** 31 - 1, -2 ** 31
y = 0
if x >= 0:
while x != 0:
num = x % 10
y = y * 10 + num
if y > INT_MAX:
return 0
x = (x - num) // 10
else:
while x != 0:
num = x % -10
y = y * 10 + num
if y < INT_MIN:
return 0
x = (x - num) // 10
return y
总结
1、本题较为简单,输出首尾反转之后的输入x即可,因此第一时间想到的是将其转化为字符串,利用字符串的切片将其首尾反转,再转化为int型数值。这是方法一的思路,另外要注意的两个细节是①根据正负号分类处理;②判断转化为int型之后是否越界。
2、方法二没有将其转化为字符串,思路为处理输入整数x,通过"%10"or"%-10"得到尾数,将尾数加到输出整数y上,最后将x整除"10"or"-10";每次遍历判断x是否为0,y*10后是否越界。
3、注意:负数整除要"除以(-10)"。