Stack是一种线性数据结构,遵循LIFO(后进先出)原则,即最后插入的元素是最先出的元素。
方法:
- 将字符一一压入数据类型字符的堆栈中。
- 从堆栈中一个一个地弹出字符,直到堆栈变空。
- 向字符数组添加一个弹出元素。
- 将字符数组转换为字符串。
- 返回反向字符串。
下面是上述方法的实现。
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