当前位置:网站首页>[LeetCode] 整数反转【7】

[LeetCode] 整数反转【7】

2022-07-05 04:55:00 山茶花开时。

问题: 给你一个32位的有符号整数x,返回将x中的数字部分反转后的结果

如果反转后整数超过32位的有符号整数的范围[-(2**31), 2**31-1] ,就返回0

示例1

输入: x = 123

输出: 321

示例2

输入: x = -123

输出: -321

示例3

输入: x = 120

输出: 21

示例4

输入: x = 0

输出: 0

# 解法1
def reverse(x):
    if x == 0:
        return 0
    if x > 0:
        str_x = str(x)
        str_x = str_x[::-1]
        x = int(str_x)
        if x > 2**31 - 1:
            return 0
    if x < 0:
        str_x = str(x)
        str_x = str_x[1:]
        str_x = str_x[::-1]
        x = '-' + str_x
        x = int(x)
        if x < -(2**31):
            return 0
    return x

# 解法2
def reverse(x):
    if x == 0:
        return 0
    else:
        str_x = str(x)
        # 判断x为负数的情况
        if str_x[0] == '-':
            str_x = '-' + str_x[-1:-len(str_x):-1]  
            if int(str_x) < -(2**31):
                return 0
        else:
            # 判断x为正数的情况
            str_x = str_x[-1:- (len(str_x) + 1 ):-1]
            if int(str_x) > 2**31 - 1:
                return 0
    return(int(str_x))
原网站

版权声明
本文为[山茶花开时。]所创,转载请带上原文链接,感谢
https://blog.csdn.net/Hudas/article/details/125601861