Home/Learn/Number Manipulation Tricks

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

All math
1Integer to RomanMediumSolve
2Roman to IntegerEasySolve
3Excel Sheet Column TitleEasySolve
4Happy NumberEasySolve
Reverse integer and palindrome number patterns
// 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 and palindrome number patterns
// 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 idioms:
- 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.