方法一
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)"。
该博客总结了LeetCode 7题整数反转的两种方法。方法一是将整数转换为字符串,进行首尾反转后再转回整数,需要注意正负号处理和越界检查。方法二是不使用字符串,直接通过取模和整除操作实现反转,同样需要考虑边界条件。两种方法都涉及到整数溢出的问题,需在反转过程中进行判断。
424

被折叠的 条评论
为什么被折叠?



