题目:
给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。
如果反转后整数超过 32 位的有符号整数的范围[−231,231− 1] ,就返回 0。
假设环境不允许存储 64 位整数(有符号或无符号)。
解题思路:
1.判断整数正负,若整数为负,先取绝对值,反转后再取相反数
2.求整数位数:通过除十的幂求取
3.分离每一位数:通过除以十的幂再对十取余求取
4.将分离出来的每一位,乘以原来相反位的10的幂再相加求得反转数
5.判断反转数有没有超出整数范围,若有,置零。
def Solution(x:int):
result = 0
if x > 0:
for i in range(11):
if x//(10**i) != 0 :
y = i+1
bit_list = []
for i in range(y):
bit = (x // (10 ** i)) % 10
bit_list.append(bit)
for bit in range(len(bit_list)):
result += bit_list[bit] * (10 ** (len(bit_list) - bit - 1))
if result > 2147483647:
result = 0
return result
if x <0 :
x = x*(-1)
for i in range(12):
if x//(10**i) != 0 :
y = i+1
bit_list = []
for i in range(y):
bit = (x//(10**i))%10
bit_list.append(bit)
for bit in range(len(bit_list)):
result += bit_list[bit]*(10**(len(bit_list)-bit-1))
result = result*(-1)
if result < -2147483648:
result = 0
return result
if x == 0:
return result
解题总结:
运行时间:48 ms, 在所有 Python3 提交中击败了27.47%的用户
运行内存:14.8 MB, 在所有 Python3 提交中击败了59.03%的用户
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/roman-to-integer
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。