Pattern Guide
Number Manipulation Tricks
"Reverse digits, Roman numerals, palindrome numbers, Excel column mapping."
Number manipulation problems involve converting between representations, reversing digits, checking palindromes, or mapping between number systems. Key techniques: extract digits with mod/div, build number with multiply-and-add, check palindrome by reversing half, convert between base-26 and integers, and Roman numeral parsing with subtraction rule handling.
Problems you can solve with this pattern
5 problems · click any to start solving
// Reverse integer — handle overflow
function reverseInt(x) {
let rev = 0;
while (x !== 0) {
const digit = x % 10; // extracts last digit (negative for negative x)
x = Math.trunc(x / 10);
rev = rev * 10 + digit;
}
// Check 32-bit signed integer overflow
if (rev < -(2**31) || rev > 2**31 - 1) return 0;
return rev;
}
// Palindrome number — reverse second half
function isPalindrome(x) {
if (x < 0 || (x % 10 === 0 && x !== 0)) return false;
let rev = 0;
while (x > rev) {
rev = rev * 10 + x % 10;
x = Math.floor(x / 10);
}
return x === rev || x === Math.floor(rev / 10); // even or odd length
}Digit extraction: last digit = n % 10, remove last digit = Math.floor(n/10). Reverse a number: pop digits and push into result. Palindrome check: reverse second half and compare with first half (handles even/odd length). Base conversion: repeated division by base gives digits in reverse. Roman numerals: scan left to right, subtract when smaller value appears before larger.
// Reverse integer — handle overflow
function reverseInt(x) {
let rev = 0;
while (x !== 0) {
const digit = x % 10; // extracts last digit (negative for negative x)
x = Math.trunc(x / 10);
rev = rev * 10 + digit;
}
// Check 32-bit signed integer overflow
if (rev < -(2**31) || rev > 2**31 - 1) return 0;
return rev;
}
// Palindrome number — reverse second half
function isPalindrome(x) {
if (x < 0 || (x % 10 === 0 && x !== 0)) return false;
let rev = 0;
while (x > rev) {
rev = rev * 10 + x % 10;
x = Math.floor(x / 10);
}
return x === rev || x === Math.floor(rev / 10); // even or odd length
}- Last digit:
n % 10- Remove last digit:
Math.trunc(n / 10) (trunc for negatives!)- Palindrome check: reverse second half, compare (handles overflow)
- Base-k encoding: repeated modulo with reversed-digit reconstruction
1-indexed base-26 (Excel columns): Subtract 1 before modulo to convert from 1-indexed (A=1) to 0-indexed (A=0). Standard base conversion: subtract 0.
Overflow trick for palindrome: Instead of reversing the full number (overflow risk), only reverse the second half and compare. Stop when reversed ≥ remaining.