Reverse number – Leet Code Challenge

  • Given a input number in java.
  • Reverse input number using iterative or non recursive algorithm.
    • e.g. if input number is 1234 then reverse number should be 4321.
  • We will use modulus & divide operator to reverse number.
    • e.g 1234 % 10 = 4
    • 1234 / 10 = 123.

Examples: Reverse number in java:

Example 1:
Input number = 12345
Reverse (12345) = 54321
 
Example 2 (Reverse Negative number):
Input number = -5678
Reverse (-5678) = -8765
 
Example 3 (Reverse integer value, which would result in overflow
value :
Input number = 2147483647
Reverse (2147483647) = 0
  
(Reverse number would in overflow value for integer variable
(7463847412). consequently, reverse method would return 0.

Algorithm: Reverse number using module & divisor operator

  • Given inputNumber 12345.
  • Create variable reverseNumber = 0;
  • Iterate through the loop until inputNumber > 0
    • digit = 12345 % 10 = 5
    • reverseNumber = reverseNumber * 10 + 5
    • reverseNumber = 5
    • inputNumber = inputNumber / 10.
      • inputNumber = 1234
    • Keep iterative the loop
  • At end of loop, we will get reverse of input number.

Program to reverse number (Leet Code Challenge)

package org.learn.beginner;
 
import java.util.Scanner;
 
public class ReverseNumber {
    public static void main(String[] args) {
        try (Scanner scanner = new Scanner(System.in)) {
            System.out.print("Enter input number : ");
            int number = scanner.nextInt();
            int reverse = reverse(number);
            System.out.printf("Reverse of input number %d is : %d",
                                            number,reverse);
        }
    }
 
    private static int reverse(int inputNumber) {
        long reverseNumber = 0;
        int digit = 0;
        boolean negativeNumber = false;
 
        if(inputNumber<0) {
            negativeNumber = true;
            inputNumber = Math.abs(inputNumber);
        }
 
        while(inputNumber > 0) {
            //get last digit e.g. 123 % 10 = 3
            digit = inputNumber % 10;
 
            //after every loop get the next number
            //which is at 10 place from current number.
            reverseNumber = reverseNumber * 10 + digit;
            inputNumber /= 10;
        }
 
        if(reverseNumber > Integer.MAX_VALUE ||
                reverseNumber < Integer.MIN_VALUE)
            return 0;
            //throw new IllegalArgumentException
              //    ("Can not reverse input integer, Value of range");
 
        if(negativeNumber)
            reverseNumber = -reverseNumber;
 
        return (int)reverseNumber;
    }
}

Reverse input number using iterative method:

Enter input number : 12345
Reverse of input number 12345 is : 54321
 
Enter input number : -5678
Reverse of input number -5678 is : -8765
 
Enter input number : 2147483647
Reverse of input number 2147483647 is : 0