Open In App

Reverse a number using stack

Last Updated : 15 Jul, 2022
Improve
Improve
Like Article
Like
Save
Share
Report

Given a number , write a program to reverse this number using stack.

Examples: 

Input : 365
Output : 563

Input : 6899
Output : 9986

We have already discussed the simple method to reverse a number in this post. In this post we will discuss about how to reverse a number using stack.
The idea to do this is to extract digits of the number and push the digits on to a stack. Once all of the digits of the number are pushed to the stack, we will start popping the contents of stack one by one and form a number. 
As stack is a LIFO data structure, digits of the newly formed number will be in reverse order.

Below is the implementation of above idea: 

C++





Java




// Java program to reverse the number
// using a stack
import java.util.Stack;
 
public class GFG
{
    // Stack to maintain order of digits
    static Stack<Integer> st= new Stack<>();
 
    // Function to push digits into stack
    static void push_digits(int number)
    {
        while(number != 0)
        {
            st.push(number % 10);
            number = number / 10;
        }
    }
 
    // Function to reverse the number
    static int reverse_number(int number)
    {
        // Function call to push number's
        // digits to stack
        push_digits(number);
        int reverse = 0;
        int i = 1;
 
        // Popping the digits and forming
        // the reversed number
        while (!st.isEmpty())
        {
            reverse = reverse + (st.peek() * i);
            st.pop();
            i = i * 10;
        }
 
        // Return the reversed number formed
        return reverse;
    }
 
    // Driver program to test above function
    public static void main(String[] args)
    {
        int number = 39997;
        System.out.println(reverse_number(number));
    }
}
// This code is contributed by Sumit Ghosh


Python3




# Python3 program to reverse the
# number using a stack
 
# Stack to maintain order of digits
st = [];
 
# Function to push digits into stack
def push_digits(number):
 
    while (number != 0):
        st.append(number % 10);
        number = int(number / 10);
 
# Function to reverse the number
def reverse_number(number):
     
    # Function call to push number's
    # digits to stack
    push_digits(number);
     
    reverse = 0;
    i = 1;
     
    # Popping the digits and forming
    # the reversed number
    while (len(st) > 0):
        reverse = reverse + (st[len(st) - 1] * i);
        st.pop();
        i = i * 10;
     
    # Return the reversed number formed
    return reverse;
 
# Driver Code
number = 39997;
 
# Function call to reverse number
print(reverse_number(number));
 
# This code is contributed by mits


C#





PHP




<?php
// PHP program to reverse the number
// using a stack
 
// Stack to maintain order of digits
$st = array();
 
// Function to push digits into stack
function push_digits($number)
{
    global $st;
    while ($number != 0)
    {
        array_push($st, $number % 10);
        $number = (int)($number / 10);
    }
}
 
// Function to reverse the number
function reverse_number($number)
{
    global $st;
     
    // Function call to push number's
    // digits to stack
    push_digits($number);
     
    $reverse = 0;
    $i = 1;
     
    // Popping the digits and forming
    // the reversed number
    while (!empty($st))
    {
        $reverse = $reverse +
                  ($st[count($st) - 1] * $i);
        array_pop($st);
        $i = $i * 10;
    }
     
    // Return the reversed number formed
    return $reverse;
}
 
// Driver Code
$number = 39997;
 
// Function call to reverse number
echo reverse_number($number);
 
// This code is contributed by mits
?>


Javascript




<script>
 // JavaScript program for the above approach
 
        // Stack to maintain order of digits
        let st = [];
 
        // Function to push digits into stack
        function push_digits(number)
        {
            while (number != 0)
            {
                st.push(number % 10);
                number = Math.floor(number / 10);
            }
        }
 
        // Function to reverse the number
        function reverse_number(number)
        {
         
            // Function call to push number's
            // digits to stack
            push_digits(number);
 
            let reverse = 0;
            let i = 1;
 
            // Popping the digits and forming
            // the reversed number
            while (st.length != 0) {
                reverse = reverse + (st[st.length - 1] * i);
                st.pop();
                i = i * 10;
            }
 
            // Return the reversed number formed
            return reverse;
        }
 
        // Driver program to test above function
        let number = 39997;
 
        // Function call to reverse number
        document.write(reverse_number(number));
 
// This code is contributed by Potta Lokesh
</script>


Output

79993

Time Complexity: O( logN ) 
Auxiliary Space: O( logN ), Where N is the input number.

 



Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads