昨天晚上突然梦到自己身边的朋友身患艾滋病,亲身经历了他每天被病魔折磨的过程,很揪心,早上也是被这个梦惊醒,直到现在还有些压抑。人生无常,但生命可贵,趁着还有力气,多去感受生活吧!每一个热爱生命热爱生活的人儿都值得被眷顾!
这一题也是很简单了,数据类型为整数,那就是省事很多了。我们只需每次用除法和求余分别得到个位,十位,百位...的数,存入一List列表中,注意的地方有两点,一是要注意加减符号,二就是要注意数值大小范围,题目所给的范围是[−2^31, 2^31 − 1]。根据这个假设,如果反转后的整数溢出,则返回 0。思路很简单,一看便知,所以这儿我也就不把官网所给的解题思路贴出来了,直接看代码。
代码如下:
class Solution:
def reverse(self, x):
"""
:type x: int
:rtype: int
"""
num_reverse = 0
num_list = []
x_abs = abs(x)
x_flag = 0
if -2 ** 31 <= x <= 2**31 - 1:
if x < 0:
x_flag = 1
flag = x_abs
while flag > 0:
flag = int(x_abs / 10)
x_list = x_abs % 10
num_list.append(x_list)
x_abs = int(x_abs / 10)
for num in range(len(num_list)):
num_reverse += num_list[num] * 10 ** (len(num_list) - num - 1)
else:
num_reverse = 0
if -2 ** 31 <= num_reverse * (-1) ** x_flag <= 2 ** 31 - 1:
return num_reverse * (-1) ** x_flag
else:
return 0
效率嘛,很一般般。本人较懒,而且水平有限,能解出来就比较满足了,鄙视眼