使用堆栈反转一个数字

给定一个数字,编写一个程序,使用堆栈反转这个数字。 例如:

null
Input : 365Output : 563Input : 6899Output : 9986

我们已经讨论过一个简单的方法来反转一个数字 邮递在本文中,我们将讨论如何使用堆栈反转数字。 这样做的想法是提取数字的数字,并将数字推到堆栈中。一旦数字的所有数字都被推到堆栈中,我们将开始逐个弹出堆栈的内容并形成一个数字。 由于堆栈是后进先出的数据结构,新形成的数字的顺序将相反。 以下是上述理念的实施:

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
?>


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>


输出:

79993

时间复杂性: O(logN) 辅助空间: O(logN),其中N是输入编号。

本文由 罗希特·塔普里亚尔 .如果你喜欢GeekSforgek,并想贡献自己的力量,你也可以使用 写极客。组织 或者把你的文章寄去评论-team@geeksforgeeks.org.看到你的文章出现在Geeksforgeks主页上,并帮助其他极客。 如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写下评论。

© 版权声明
THE END
喜欢就支持一下吧
点赞14 分享