Reverse Integer 整数反转
题目
解法1、利用数值反转数字
class Solution:
def reverse(self, x: int) -> int:
num = 0
a = abs(x)
while(a!=0):
temp = a % 10
num = num * 10 + temp
a = a // 10
if x > 0 and num < 2**31:
return num
elif x < 0 and num <= 2**31:
return -num
else:
return 0
借助temp反转数字
解法2、字符串反转
class Solution:
def reverse(self, x: int) -> int:
abs_num = abs(x)
abs_num_ = int(str(abs_num)[::-1])
if abs_num_<-2**31 or abs_num_>2**31-1:
return 0
if x<0:
return -abs_num_
return abs_num_
解法3、
class Solution:
def reverse(self, x):
r = x // max(1, abs(x)) * int(str(abs(x))[::-1])
return r if r.bit_length() < 32 or r == -2**31 else 0
- x // max(1, abs(x))意味着 0:x为0, 1:x为正, -1:x为负,相当于被废弃的函数cmp
- [::-1]代表序列反转
- 2^31 和 -2^31 的比特数为32,其中正负号占用了一位
- 32位整数范围 [−2^31, 2^31 − 1] 中正数范围小一个是因为0的存在
出处
1、https://www.bilibili.com/video/av45840031
3、对应题目下Knife丶的题解
文章已搬运至个人博客:https://night-zhang.github.io/