📜  使用堆栈反转字符串的Java程序

📅  最后修改于: 2021-09-02 07:28:58             🧑  作者: Mango

Stack是一种线性数据结构,遵循LIFO(后进先出)原则,即最后插入的元素是最先出的元素。

方法:

  1. 将字符一一压入数据类型字符的堆栈中。
  2. 从堆栈中一个一个地弹出字符,直到堆栈变空。
  3. 向字符数组添加一个弹出元素。
  4. 将字符数组转换为字符串。
  5. 返回反向字符串。

下面是上述方法的实现。

Java
// Java Program to Reverse a String using Stack
  
import java.io.*;
import java.util.*;
  
class GFG {
  
    public static String ReverseString(String str)
    {
        char[] reverseString = new char[str.length()];
        // Declare a stack of type Character
        Stack stack = new Stack();
  
        // Traverse the String and push the character one by
        // one into the Stack
        for (int i = 0; i < str.length(); i++) {
            // push the character into the Stack
            stack.push(str.charAt(i));
        }
  
        // Now Pop the Characters from the stack until it
        // becomes empty
  
        int i = 0;
        while (!stack.isEmpty()) { // popping element until
                                   // stack become empty
            // get the character from the top of the stack
            reverseString[i++] = stack.pop();
        }
        // return string object
        return new String(reverseString);
    }
  
    // Driver code
    public static void main(String[] args)
    {
        String str1 = "GeeksForGeeks";
        
        // call the function
        System.out.println(str1 + " <- Reverse -> "
                           + ReverseString(str1));
        
        String str2 = "Hello World";
        
        // call the function
        System.out.println(str2 + " <- Reverse -> "
                           + ReverseString(str2));
    }
}


输出:

GeeksForGeeks <- Reverse -> skeeGroFskeeG
Hello World <- Reverse -> dlroW olleH

时间复杂度: O(n),其中 n 是堆栈中的字符数。

辅助空间:堆栈的 O(n)。

如果您想与行业专家一起参加直播课程,请参阅Geeks Classes Live