给定一个数字,编写一个程序,使用堆栈反转这个数字。 例如:
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