# 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