leetcode种树篇,勤勤恳恳,坚持下去,希望对你也有帮助。
1.读懂题目
2. 分析,推导解法,产生思路。
解题思路:利用循环,对输入数字进行乘除和取余运算,并把输出值乘以10后与每次取余的结果相加,直到原数据变为0。
3.代码实现
class Solution(object):
def reverse(self, x):
flag = False # 标记数据的正负
x_reverse = 0 # 保存输出结果
if x < 0: # 处理负数,将其标记为负数并转换成整数,以方便后续处理。
flag = True
x = -x
while x > 0: # 核心处理部分
x_reverse = x_reverse * 10 + x % 10
x = int(x / 10 )
if flag: x_reverse = -x_reverse # 根据标记,修改符号
if -2147483647 > x_reverse or x_reverse > 2147483648:# 处理越界问题
x_reverse = 0
return x_reverse
4.总结
关键点:
(1)int的取值范围:有符号:-2^31—2^31-1 无符号:0-2^32
刚好可以直接用int表示,并注意处理边界问题。
(2)在python中,x/10结果为小数,注意进行类型转换。
(3)flag是用来判断输入值正负的标志值。用 1 和−1 作为其判断值,可以在返回时,无需使用if语句,只需要返回数值乘以flag即可,使代码更加精简。
class Solution(object):
def reverse(self, x):
flag = 1 # 标记数据的正负
x_reverse = 0 # 保存输出结果
if x < 0: # 处理负数,将其标记为负数并转换成整数,以方便后续处理。
flag = -1
x = -x
while x > 0: # 核心处理部分
x_reverse = x_reverse * 10 + x % 10
x = int(x / 10 )
if -2147483647 < x_reverse < 2147483648:# 处理越界问题
return = x_reverse * flag
else :
return 0