Hello Everyone,
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:
#include <bits/stdc++.h>
using
namespace
std;
/* Iterative function to reverse digits of num*/
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 program to test reversDigits*/
int
main()
{
int
num = 4562;
cout <<
"Reverse of no. is "
<< reversDigits(num);
getchar
();
return
0;
}
Output
Reverse of no. is 2654
Time Complexity: O(log(n)), where n is the input number.
RECURSIVE WAY
// C++ program to reverse digits of a number
#include <bits/stdc++.h>
using
namespace
std;
/* Recursive function to reverse digits of num*/
int
reversDigits(
int
num)
{
static
int
rev_num = 0;
static
int
base_pos = 1;
if
(num > 0) {
reversDigits(num / 10);
rev_num += (num % 10) * base_pos;
base_pos *= 10;
}
return
rev_num;
}
// Driver Code
int
main()
{
int
num = 4562;
cout <<
"Reverse of no. is "
<< reversDigits(num);
return
0;
}
Output
Reverse of no. is 2654
Time Complexity: O(log(n)) where n is the input number.