Reverse digits of a number

Write a program to reverse the digits of an integer.

Examples :

Input : num = 12345 Output: 54321 Input : num = 876 Output: 678

ITERATIVE WAY

Algorithm:

Input: num (1) Initialize rev_num = 0 (2) Loop while num > 0 (a) Multiply rev_num by 10 and add remainder of num divide by 10 to rev_num rev_num = rev_num*10 + num%10; (b) Divide num by 10 (3) Return rev_num

Example:

num = 4562
rev_num = 0
rev_num = rev_num *10 + num%10 = 2
num = num/10 = 456
rev_num = rev_num *10 + num%10 = 20 + 6 = 26
num = num/10 = 45
rev_num = rev_num *10 + num%10 = 260 + 5 = 265
num = num/10 = 4
rev_num = rev_num *10 + num%10 = 2650 + 4 = 2654
num = num/10 = 0

Program:

// Java program to reverse a number

class GFG {

/* Iterative function to reverse

digits of num*/

static int reversDigits( int num)

{

int rev_num = 0 ;

while (num > 0 ) {

rev_num = rev_num * 10 + num % 10 ;

num = num / 10 ;

}

return rev_num;

}

// Driver code

public static void main(String[] args)

{

int num = 4562 ;

System.out.println( "Reverse of no. is "

+ reversDigits(num));

}

}

Output

Reverse of no. is 2654

Time Complexity: O(log(n)), where n is the input number.

RECURSIVE WAY

// Java program to reverse digits of a number

// Recursive function to

// reverse digits of num

class GFG {

static int rev_num = 0 ;

static int base_pos = 1 ;

static int reversDigits( int num)

{

if (num > 0 ) {

reversDigits(num / 10 );

rev_num += (num % 10 ) * base_pos;

base_pos *= 10 ;

}

return rev_num;

}

// Driver Code

public static void main(String[] args)

{

int num = 4562 ;

System.out.println(reversDigits(num));

}

}

Output

Reverse of no. is 2654

Time Complexity: O(log(n)) where n is the input number.

Using String in java

We will convert the number to a string using StringBuffer after this, we will reverse that string using the reverse() method

corner case

Input: 32100

So for the above input if we try to solve this by reversing the string, then the output will be 00123.

So to deal with this situation we again need to convert the string to integer so that our output will be 123

// Java program to reverse a number

public class GFG {

static int reversDigits( int num)

{

// converting number to string

StringBuffer string

= new StringBuffer(String.valueOf(num));

// reversing the string

string.reverse();

// converting string to integer

num = Integer.parseInt(String.valueOf(string));

// returning integer

return num;

}

public static void main(String[] args)

{

int num = 4562 ;

System.out.println( "Reverse of no. is "

+ reversDigits(num));

}

}

Output

Reverse of no. is 2654