Reverse string word by word in java (stack/ stringbuilder /example)

  • Given a string in java, reverse the string word by word.
  • Let us look into couple of examples to understand problem statement.
    • Example 1:
      • String inputString = “Girl Proposes Boy”
      • reverse(inputString) should be “Boy Proposes Girl”
    • Example 2:
      • String inputString = “Hell To Heaven”
      • reverse(inputString) should be “Heaven To Hell”

1. Algorithm: Reverse string word by word (java/ stack /stringbuilder)

  1. Reverse String using StringBuilder
    • Split the input string using space delimiter.
    • Start appending the string from end .
    • We will get string reversed word wise.
  2. Reverse String using Stack.
    • Split the input string using space delimiter.
    • Iterate through the string array (result of previous step) & push each string to stack.
    • Pop each string element from stack and concatenate the string.
    • We we get the desired output.
reverse string word stack java example
Fig 1: Reverse String word by word

2. Program: Reverse string word by word (java/stack/stringbuilder /example)

package org.learn;
 
import java.util.Scanner;
import java.util.Stack;
import java.util.regex.Pattern;
 
public class ReverseWordsInString {
 
    public static void main(String[] args) {
        try (Scanner scanner = new Scanner(System.in)) {
            System.out.printf("1. Enter string to reverse : ");
            String inputString = scanner.nextLine();
             
            if (inputString == null || inputString.length() == 0) {
                System.out.println("Enter the valid string");
                return;
            }
             
            String reverse = reverseStringWordWise(inputString);
            System.out.printf("2. Reverse string using StringBuilder is : %s", reverse);
             
            reverse = reverseStringWordWise_Stack(inputString);
            System.out.printf("\n3. Reverse string using stack is : %s", reverse);
        }
    }
 
    private static String reverseStringWordWise(String inputString) {
        String[] arrString = inputString.trim().split(Pattern.quote(" "));
        StringBuilder builder = new StringBuilder();
        int length = arrString.length;
 
        while (--length >= 0) {
            builder.append(arrString[length]).append(" ");
        }
 
        return builder.toString();
    }
     
    private static String reverseStringWordWise_Stack(String inputString) {
        String[] arrString = inputString.trim().split(Pattern.quote(" "));
        Stack<String> stack = new Stack<>();
        for(String input : arrString) {
            stack.push(input);
        }
         
        StringBuilder builder = new StringBuilder();
        while( !stack.isEmpty()) {
            builder.append(stack.pop()).append(" ");
        }
        return builder.toString();
    }
}

3. Output: Reverse string word by word (java/stack/stringbuilder /example)

1. Enter string to reverse : Girl Proposes Boy
2. Reverse string using StringBuilder is : Boy Proposes Girl
3. Reverse string using stack is : Boy Proposes Girl
 
1. Enter string to reverse : Hell To Heaven
2. Reverse string using StringBuilder is : Heaven To Hell
3. Reverse string using stack is : Heaven To Hell