LeetCode in Python-7. 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丶的题解
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 452966517@qq.com
文章标题:LeetCode in Python-7. Reverse Integer 整数反转
文章字数:278
本文作者:Night Zhang
发布时间:2019-07-26, 17:18:23
最后更新:2019-07-26, 17:25:12
原始链接:https://night-zhang.github.io/2019/07/26/LeetCode-in-Python-7-Reverse-Integer-整数反转/版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。