Reverse a number using stack
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.
Contact Us