LeetCode7.整数反转

举报
Python新视野 发表于 2021/09/09 23:58:20 2021/09/09
【摘要】 题目来源:力扣(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

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。