Write a program to reverse digits of a number

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.