# Reverse a number using stack

Last Updated : 15 Jul, 2022

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:

## 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 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`

## PHP

 ``

## Javascript

 ``

Output

`79993`

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

Previous
Next