Reverse Number Digits
Learn how to reverse the digits of a number using string reversal and mathematical approaches. A classic coding interview problem with integer overflow considerations.
Detailed Explanation
Reversing Number Digits
Reversing the digits of a number is a classic algorithmic problem that can be solved with either string reversal or pure mathematics.
String Approach
Convert to string, reverse, convert back:
function reverseNumber(n) {
const sign = Math.sign(n);
const reversed = parseInt([...Math.abs(n).toString()].reverse().join(""));
return sign * reversed;
}
reverseNumber(12345); // 54321
reverseNumber(-789); // -987
reverseNumber(1200); // 21 (leading zeros dropped)
Mathematical Approach
Extract digits one at a time using modulo and division:
function reverseNumber(n) {
const sign = Math.sign(n);
let num = Math.abs(n);
let result = 0;
while (num > 0) {
result = result * 10 + (num % 10);
num = Math.floor(num / 10);
}
return sign * result;
}
Trace Example
Reversing 1234:
Step 1: result = 0 * 10 + 4 = 4, num = 123
Step 2: result = 4 * 10 + 3 = 43, num = 12
Step 3: result = 43 * 10 + 2 = 432, num = 1
Step 4: result = 432 * 10 + 1 = 4321, num = 0
Integer Overflow (LeetCode Classic)
In languages with fixed-size integers (C, Java), reversed numbers can overflow:
Input: 1534236469
Reversed: 9646324351 → exceeds 32-bit integer max (2,147,483,647)
The LeetCode problem requires returning 0 if the reversed number overflows:
function reverse(x) {
const MAX = 2**31 - 1;
const MIN = -(2**31);
const sign = Math.sign(x);
let num = Math.abs(x);
let result = 0;
while (num > 0) {
result = result * 10 + (num % 10);
num = Math.floor(num / 10);
}
result *= sign;
return (result > MAX || result < MIN) ? 0 : result;
}
Edge Cases
- Negative numbers: Preserve the sign, reverse the digits
- Trailing zeros: 1200 → 21 (leading zeros in reversed number are dropped)
- Single digit: Returns the same number
- Zero: Returns 0
Use Case
Number digit reversal is one of the most popular easy-level coding interview problems on LeetCode (#7), HackerRank, and similar platforms. It tests understanding of modular arithmetic, integer overflow handling, and edge case thinking.