LeetCode_7.Reverse Integer

问题

Given a 32-bit signed integer, reverse digits of an integer.

Example 1:

Input: 123
Output: 321
Example 2:

Input: -123
Output: -321
Example 3:

Input: 120
Output: 21
Note:
Assume we are dealing with an environment which could only store integers within the 32-bit signed integer range: [−231, 231 − 1]. For the purpose of this problem, assume that your function returns 0 when the reversed integer overflows.

解题

def reverse(x):
    """
    :type x: int
    :rtype: int
    """
    y = -x if x < 0 else x

    list = []
    last = y
    while last > 0:
        list.append(last % 10)
        last //= 10

    sum = 0
    length = len(list)
    for l in list:
        length -= 1
        sum += l * 10 ** length

    result = -sum if x < 0 else sum

    if result > 2147483647 or result < -2147483648:
        return 0

    return result

思路

这里利用了不断对10作除法,所获得的余数顺序正好与原数字相反的特性。

posted @ 2018-12-14 22:46  Ken.W  阅读(135)  评论(0编辑  收藏  举报