LeetCode 力扣题解(7)整数反转,实现语言:Python,解决方法:字符倒序。
一、题目:整数反转
给你一个 32
位的有符号整数 x
,返回将 x
中的数字部分反转后的结果。
如果反转后整数超过 32
位的有符号整数的范围 [−231, 231 − 1]
,就返回 0
。
假设环境不允许存储 64
位整数(有符号或无符号)。
示例 1:
输入:x = 123
输出:321
示例 2:
输入:x = -123
输出:-321
示例 3:
输入:x = 120
输出:21
示例 4:
输入:x = 0
输出:0
提示:
- − 2 31 < = x < = 2 31 − 1 -2^{31} <= x <= 2^{31} - 1 −231<=x<=231−1
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/reverse-integer
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
二、题解:字符倒序
字符倒序,将输入的整形转换为字符串,倒序后输出,时间复杂度是 O ( n ) O(n) O(n),空间复杂度是 O ( n ) O(n) O(n)。
先将输入的整形 x
转换为字符串 s
:
- 如果
x==0
,返回0
- 如果
x < 0
,提取符号“-”
后,将字符串s
倒序存为s_
- 如果
x > 0
,直接将字符串s
倒序存为s_
最后,将字符串 s_
转换为整形 x_
,检测是否在 32
位有符号的整形范围内,如果在则直接 x_
,如果不在则返回 0
。
三、示例代码
class Solution:
def reverse(self, x: int) -> int:
if x == 0:
return 0
s = str(x)
s_ = ''
start = 0
if s[0] == '-':
s_ += '-'
s = s[:0:-1]
else:
s = s[::-1]
s_ += s
x_ = int(s_)
if x_ < -2147483648 or x_ > 2147483647:
return 0
else:
return x_