Loading

Leetcode - 7. 整数反转

给你一个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

提示:
-231 <= x <= 231 - 1

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/reverse-integer
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解1 2021/8/24 O(n)

def reverse(x: int) -> int:
    # -729290
    # -092927
    fuhao = 1 if x>=0 else -1
    x=-x if x<0 else x
    l=list(str(x))
    len=l.__len__()
    base=1
    res=0
    for x in l:
        res+=base*int(x)
        ### 错误 - 1
        if fuhao==-1:
            if res>(1<<31): return 0
        else:
            if res>((1<<31)-1): return 0
        ### 错误 - 1
        base*=10
    return fuhao*res

if __name__ == '__main__':
    print(reverse(-729290))
    print(reverse(-72290))
    print(reverse(-7))
    print(reverse(7))
    print(reverse(79))
    print(reverse(+79))
    print(reverse(+79000000))

    ### 错误
    # 1, 预期:0
    print(reverse(1534236469))

posted @ 2021-08-24 18:16  wwcg2235  阅读(49)  评论(0)    收藏  举报