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 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 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 // 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 ?> |
<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> |
79993
Time Complexity: O( logN )
Auxiliary Space: O( logN ), Where N is the input number.