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 poping 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 the implementation of above idea:
C++
// CPP program to reverse the number // using a stack #include <bits/stdc++.h> using namespace std; // Stack to maintain order of digits stack < int > st; // Function to push digits into stack void push_digits( int number) { while (number != 0) { st.push(number % 10); number = number / 10; } } // Function to reverse the number 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.empty()) { reverse = reverse + (st.top() * i); st.pop(); i = i * 10; } // Return the reversed number formed return reverse; } // Driver program to test above function int main() { int number = 39997; // Function call to reverse number cout << reverse_number(number); return 0; } |
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#
// C# program to reverse the number // using a stack using System; using System.Collections.Generic; class GFG { // Stack to maintain order of digits public static Stack< int > st = new Stack< int >(); // Function to push digits into stack public static void push_digits( int number) { while (number != 0) { st.Push(number % 10); number = number / 10; } } // Function to reverse the number public 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.Count > 0) { reverse = reverse + (st.Peek() * i); st.Pop(); i = i * 10; } // Return the reversed number formed return reverse; } // Driver Code public static void Main( string [] args) { int number = 39997; Console.WriteLine(reverse_number(number)); } } // This code is contributed by Shrikant13 |
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 ?> |
Output:
79993
Time Complexity: O( logN )
Auxiliary Space: O( logN ), Where N is the input number.
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.
leave a comment
0 Comments