LeetCode之Reverse Integer
- 问题描述
Given a 32-bit signed integer, reverse digits of an integer. -
示例
Input: 123 Output: 321 Input: -123 Output: -321 Input: 120 Output: 21
- 注意
Assume we are dealing with an environment which could only store integers within the 32-bit signed integer range: [−2^31, 2^31 − 1]. For the purpose of this problem, assume that your function returns 0 when the reversed integer overflows.
假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−2^31, 2^31 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0 -
解决:
-
将int转为str,如果小于0,从字符串索引1开始存入列表中,大于0,从索引0开始存入列表,如果能被10整除,从列表倒数第二个元素开始,每个元素转为int,再与对应的10的幂相乘,累加。这段代码比较low,代码量较大,没有用到Python语言的特点。
class Solution: def reverse(self, x: int) -> int: str_x = str(x) list_x = [] if x < 0: for i in range(1, len(str_x)): list_x.append(str_x[i]) else: for i in range(len(str_x)): list_x.append(str_x[i]) number = 0 if x%10 == 0: for j in range(len(list_x)-2, -1, -1): number += int(list_x[j]) * (10 ** j) else: for j in range(len(list_x)-1, -1, -1): number += int(list_x[j]) * (10 ** j) # print(number) if x < 0: number = number - 2*number if number >= 2 ** 31 or number < (-2 ** 31): number = 0 return number
-
与上面的思路一致,不过利用了Python的一些操作
class Solution: def reverse(self, x): """ :type x: int :rtype: int """ if x==0: return 0 str_x = str(x) x = '' if str_x[0] == '-': x += '-' x += str_x[len(str_x)-1::-1].lstrip("0").rstrip("-") # Python3 整型是没有限制大小的,可以当作 Long 类型使用,所以可以直接强制转化,其他语言两个数相加会溢出,变成负数 x = int(x) if -2**31 < x < 2**31-1: return x return 0
-
官方解法。循环,对给定的int数先对10取余,再除以10,直到除以10为0为止。反转后的数开始为0,每次乘10再加上每次取余后的结果,最终就是反转的结果。但是乘10加上取余结果可能会造成溢出问题。进行判断:
class Solution: def reverse(self, x: int) -> int: rev = 0 flag = 1 if x < 0: x = abs(x) flag = -1 while x != 0: pop = x % 10 x = x // 10 if (rev > (2**31-1) // 10) or (rev == (2**31-1) // 10 and pop > 7): return 0 if (rev < (-2**31) // 10) or (rev == (-2**31) // 10 and pop < -8): return 0 rev = rev * 10 + pop return rev * flag
-
注:Python中负数取余
-123%10 = -123 - 10 * (-123 // 10) = -123 - 10 * (-13) = 7
-
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。