Java Program to Reverse a String using Stack

Last Updated : 21 Oct, 2020
Comments
Improve
Suggest changes
Like Article
Like
Report

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:

  1. Push the character one by one into the Stack of datatype character.
  2. Pop the character one by one from the Stack until the stack becomes empty.
  3. Add a popped element to the character array.
  4. Convert character array to string.
  5. 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.


Next Article
Practice Tags :

Similar Reads