LeetCode7.整数反转
【摘要】
题目来源:力扣(LeetCode)
题目描述: 给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。
如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 ...
题目来源:力扣(LeetCode)
题目描述:
给你一个 32
位的有符号整数 x
,返回将 x
中的数字部分反转后的结果。
如果反转后整数超过 32
位的有符号整数的范围 [−231, 231 − 1]
,就返回 0
。
假设环境不允许存储 64 位整数(有符号或无符号)。
示例1:
输入:x = 123
输出:321
- 1
- 2
示例2:
输入:x = -123
输出:-321
- 1
- 2
示例3:
输入:x = 120
输出:21
- 1
- 2
示例4:
输入:x = 0
输出:0
- 1
- 2
提示:
-2^31 <= x <= 2^31 - 1
解题思路:
将 reverse
作为反转后的数字,重复获取 x
的低位数字,‘推入’ reverse
的末尾,直至 x = 0
。
class Solution(object):
def reverse(self, x):
"""
:type x: int
:rtype: int
"""
int_min, int_max = -2 ** 31, 2 ** 31 - 1
reverse = 0
while x != 0:
# 判断是否超过32位范围
if reverse < int_min // 10 + 1 or reverse > int_max // 10:
return 0
# 获取x的低位数字
digit = x % 10
# 当x为负数时,取模运算的返回值也是非负数,因此这里需要进行特殊判断
if x < 0 and digit > 0:
digit -= 10
# x去除低位的数字
x = (x - digit) // 10
# 将digit推入reverse末尾
reverse = reverse * 10 + digit
return reverse
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
文章来源: blog.csdn.net,作者:Dream丶Killer,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/qq_43965708/article/details/116591673
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)