Easy 7 – 整数反转
题目描述:
给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。
如果反转后整数超过 32 位的有符号整数的范围 [−2^31, 2^31 − 1] ,就返回 0。
首先来看我的蠢钝如猪版本:
class Solution:
def reverse(self, x: int) -> int:
if x == 0:
return 0
indicator = 1
if x < 0:
indicator = -1
x = -x
store_digit = []
while x != 0:
one_digit = x%10
store_digit.append(one_digit)
x = int(x/10)
tens = 1
product = 0
for number in reversed(store_digit):
product = product + number * tens
tens *= 10
number_reverse = indicator * product
if number_reverse < -(2**31) or number_reverse > (2**31)-1:
return 0
return number_reverse
但是有一说一,想到用字符串的方法其实会引出一个更优解,只是我没有仔细考虑。(其实就是能力到这儿了。
先睡觉了,明天起来再写后面的。
摸了一天的鱼,终于开始做点正事。
昨天说了,从字符串的角度来进行处理也是可以的,尝试了一下:
class Solution:
def reverse(self, x: int) -> int:
abs_num = abs(x)
sign = 1
if x < 0:
sign = -1
num_reverse = sign * int(str(abs_num)[::-1])
if abs(num_reverse) > 2**31:
return 0
return num_reverse
看起来反正比昨天的短很多,但是从运行的结果上来看的话,甚至表现还不如单纯从数字考虑的版本,但是我觉得对我来说能从两个角度考虑这个问题已经很好了,剩下的以后再说吧。
Leave a Reply