The Stack is a linear data structure that follows the LIFO(Last In First Out) principle, i.e, the element inserted at the last is the element to come out first.
Approach:
- Push the character one by one into the Stack of datatype character.
- Pop the character one by one from the Stack until the stack becomes empty.
- Add a popped element to the character array.
- Convert character array to string.
- Return reversed string.
Below is the implementation of the above approach.
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<Character> stack = new Stack<Character>(); // 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)); } } |
Output:
GeeksForGeeks <- Reverse -> skeeGroFskeeG Hello World <- Reverse -> dlroW olleH
Time Complexity: O(n), where n is a number of characters in the stack.
Auxiliary Space: O(n) for the stack.