Leetcode(007) 整数反转
题目难度:简单
题目描述:给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转
示例:
要求:
假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为
请根据这个假设,如果反转后整数溢出那么就返回 0。
解答思想:
首先对给定的数进行判断:
- 如果数大于零:
将数转换为字符串再反转后转化为整数形式int(str(x)[::-1])
,这一步同时完成了翻转与去反转后前面为零的情况。后判断反转后是否超过要求范围:
if x > 2**31:
return 0
else:
return x
- 如果数小于零:
对x先取绝对值然后转换为字符串后翻转,最后再转换为整型int(str(abs(x))[::-1])
。后判断是否满足要求范围;这里由于取了绝对值,所以直接对2**31进行判断,如果满足要求这里直接返回-x。
if x > 2**31:
return 0
else:
return -x
#python实现
class Solution:
def reverse(self, x: int) -> int:
if x > 0:
x = int(str(x)[::-1])
if x > 2**31:
return 0
else:
return x
else:
x = int(str(abs(x))[::-1])
if x > 2**31:
return 0
else:
return -x