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