Tags: "leetcode", "overflow", "modulo", access_time 1-min read

Edit this post on Github

Reverse Integer

Created: January 16, 2019 by [lek-tin]

Last updated: January 16, 2019

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.

Solution

class Solution(object):
    def reverse(self, x):
        """
        :type x: int
        :rtype: int
        """
        if x == "" or x == None:
            return x

        res = "" if x > 0 else "-"
        string = str(abs(x))

        for i in range(len(string)-1, -1, -1):
            res += string[i]

        res = int(res)

        if res < -2**31 or res >= 2**31:
            return 0

        return int(res)
class Solution:
    def reverse(self, x: int) -> int:
        isNegative = x < 0
        x = abs(x)
        new_x = 0

        while x != 0:
            new_x = new_x * 10 + x % 10
            x //= 10

        # Handles overflow
        if new_x < -2**31 or new_x >= 2**31:
            return 0

        return -new_x if isNegative else new_x