LeetCode 7: Reverse Integer — Step-by-Step Visual Trace


Medium — Math | Integer Manipulation | Overflow Handling

The Problem

Given a signed 32-bit integer x, return x with its digits reversed. If reversing x causes the value to go outside the signed 32-bit integer range, return 0.

Approach

Extract digits from the input number one by one using modulo and integer division operations. Build the reversed number by multiplying the current result by 10 and adding each extracted digit, while checking for integer overflow before each multiplication.

Time: O(log n) · Space: O(1)

Code

class Solution:
    def reverse(self, x: int) -> int:
        INT_MAX = 2**31 - 1
        INT_MIN = -(2**31)

        reversed_num = 0
        sign = 1 if x > 0 else -1
        x = abs(x)

        while x != 0:
            pop = x % 10
            x //= 10

            if reversed_num > (INT_MAX - pop) // 10:
                return 0

            reversed_num = reversed_num * 10 + pop

        return reversed_num * sign

Watch It Run

Try it yourself: Open TraceLit and step through every line.


Built with TraceLit — the visual algorithm tracer for LeetCode practice.


Comments