</>

Technology

Java Programs

Difficulty

Beginner

Interview Question

Write a Java program to reverse a number using algorithm and StringBuffer.

Answer

Reverse a Number — Two Methods

Java
public class ReverseNumber {
    public static void main(String[] args) {

        // Method 1: Using algorithm (mathematical approach)
        long num = 12345;  // result: 54321
        long rev = 0;

        while (num != 0) {
            rev = rev * 10 + num % 10;   // extract last digit and build reversed
            num = num / 10;               // remove last digit
        }

        System.out.println("Reverse num is: " + rev);  // 54321

        // Method 2: Using StringBuffer
        long num1 = 12345;
        System.out.println(new StringBuffer(String.valueOf(num1)).reverse());  // 54321
    }
}

Output

CODE
Reverse num is: 54321
54321

Step-by-Step Trace (Algorithm)

CODE
num=12345, rev=0

Loop 1: rev = 0*10 + 12345%10 = 5,    num = 12345/10 = 1234
Loop 2: rev = 5*10 + 1234%10  = 54,   num = 1234/10  = 123
Loop 3: rev = 54*10 + 123%10  = 543,  num = 123/10   = 12
Loop 4: rev = 543*10 + 12%10  = 5432, num = 12/10    = 1
Loop 5: rev = 5432*10 + 1%10  = 54321,num = 1/10     = 0
Loop ends → 54321

Reverse Negative Number

Java
long num = -12345;
boolean negative = num < 0;
num = Math.abs(num);  // work with positive

long rev = 0;
while (num != 0) {
    rev = rev * 10 + num % 10;
    num /= 10;
}

if (negative) rev = -rev;
System.out.println(rev);  // -54321

Check Palindrome Number Using Reverse

Java
long original = 121;
long temp     = original;
long reversed = 0;

while (temp > 0) {
    reversed = reversed * 10 + temp % 10;
    temp /= 10;
}

System.out.println(original == reversed
    ? original + " is palindrome"
    : original + " is not palindrome");
// → 121 is palindrome

StringBuffer vs StringBuilder for Reverse

Java
// StringBuffer (thread-safe, slightly slower)
new StringBuffer("12345").reverse().toString()  // "54321"

// StringBuilder (not thread-safe, faster)
new StringBuilder("12345").reverse().toString() // "54321"

Follow AutomateQA