Leetcode 7 Reverse Integer

给定一个32位的有符号整数,输出其翻转之后的整数

示例1:
输入:123
输出:321

示例2:
输入:-123
输出:-321

示例3:
输入:120
输出:21

注意:
当返回值超过32位有符号整数能表示的范围时,返回0

题意分析:
将整数翻转,注意处理下各种特殊case。
由于python语言的特性,做这道题有着天然的优势。

思路分析:
先考虑最一般的情况,x就是一个普通的正整数,我们只需要将x强制转换成字符串类型然后反转即可。

case 1:x<0,我们需要将负号先拿出来,然后把x按上面的方式处理,最后加上负号即可。
case 2:按上面两种方法最后得出来的结果超出了整形范围,我们就单独判断一下。

1
2
3
4
5
6
7
8
9
10
11
12
# 32ms, beats 80%
class Solution(object):
def reverse(self, x):
# 存符号,最后乘上flag
flag = [-1,1][x>=0]
# 当做正整数处理
x = abs(x)
x = int(str(x)[::-1])
x *= flag
# 判断是否越界
if x < -2**31 or x > 2**31-1: return 0
return x