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)