//(不同解法持续更新中……)//
题目要求
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
示例 1:
输入: 123
输出: 321
示例 2:
输入: -123
输出: -321
示例 3:
输入: 120
输出: 21
- 注意:
假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。
【Python】解法
解答思路
- 题目要求有两个,一个是反转整数,另一个是检测是否在32bits整数范围内
- 两种代码思路相同,一个直接求解,一个定义了函数将其模块化
代码部分
if x < 0:
str_1 = str(x)
str_2 = str_1[1:]
str_3 = str_2[::-1]
x_2 = int(str_3)
if x_2 >= -2**31 and x_2 <= 2**31-1:
return -x_2
else:
return 0
else:
str_1 = str(x)
str_2 = str_1[::-1]
x_2 = int(str_2)
if x_2 >= -2**31 and x_2 <= 2**31-1:
return x_2
else:
return 0
def reverse_ints(x):
str_1 = str(x)
if str_1[0] == "-":
str_2 = str_1[1:]
str_3 = "-" + str_2[::-1]
return int(str_3)
else:
str_2 = str_1[::-1]
return int(str_2)
def if_over_32bits_ints(x):
if x >= -2**31 and x <= 2**31-1:
return x
else:
return 0
if_over_32bits_ints(reverse_ints(x))
执行结果
执行用时 : 52 ms, 在所有 Python3 提交中击败了70.68%的用户
内存消耗 : 13.8 MB, 在所有 Python3 提交中击败了5.21%的用户
执行用时 : 88 ms, 在所有 Python3 提交中击败了8.04%的用户
内存消耗 : 13.9 MB, 在所有 Python3 提交中击败了5.21%的用户