$show=/label

Java Program To Reverse Words In String (Reverse only words in input order)

SHARE:

A quick and practical program to reverse only words in a given string. Example programs using StringBuilder and java 8 streams with splitAsStream(), map(), Collectors.joining() methods.

1. Overview


In this tutorial, We'll learn how to reverse the words in a string in java. The solution to this problem can be done using the StringBuilder class and using java 8 stream concepts. Many developers will be confused about whether word order needs to be reversed or each word should be reversed. You should clear on this with the interviewer. This will give a hint to the interviewer that the candidate is thinking and coming with a questionnaire.

But in this article, we will be reversing each word as it appears the order in the input as below.

Example:

String input = "Welcome to the JavaProgramTo.com blog"

Output:

emocleW ot eht moc.oTmargorPavaJ golb 

We recommend trying to solve the problem without seeing the answers. Once you come up with your own algorithm then see the different answers.

Java Program To Reverse Words In String (Reverse only words in input order)




2. Using StringBuilder and String split() method


In this approach, we will be using the String split(), charAt(), length() and StringBuilder class append append() methods.

A) First split the given string by whitespace.
B) Take the first word and reverse it. Finally, add the reversed word to the new StringBuilder. Append the white space at the end of each word.
C) Repeat step B for all words.
D) Finally, covert StringBuilder into String using the toString() method.

package com.java.w3schools.blog.java.program.to.strings;

/**
 *
 * Reversing each word in string without loosing its initial order of the words.
 * 
 * @author javaprogramto.com
 *
 */
public class ReverseWordsStringBuilder {

 private static final String WHITESPACE_DELIMITER = " ";

 public static void main(String[] args) {

  System.out.println("Examples to reversing each word in a string inplace.");
  String input1 = "Welcome to the JavaProgramTo.com blog";
  String output1 = reverseWordsWithStringBuilder(input1);
  System.out.println(" input 1 : " + input1);
  System.out.println(" output 1 : " + output1);

  String input2 = "This is part of String interview programs";
  String output2 = reverseWordsWithStringBuilder(input2);
  System.out.println(" input 2 : " + input2);
  System.out.println(" output 2 : " + output2);
 }

 public static String reverseWordsWithStringBuilder(String input) {

  StringBuilder reversedFinalOutput = new StringBuilder();

  // splitting the input string by space.
  String[] words = input.split(WHITESPACE_DELIMITER);
  

  for (String word : words) {
   
   StringBuilder reversedWord = new StringBuilder();
   for (int i = word.length() - 1; i >= 0; i--) {
    reversedWord.append(word.charAt(i));
   }

   reversedFinalOutput.append(reversedWord).append(WHITESPACE_DELIMITER);

   // to clear the builder obj.
   //reversedWord.setLength(0);
  }

  String finalOutputStr = reversedFinalOutput.toString();

  return finalOutputStr;
 }

}

Output:

Examples to reversing each word in a string inplace.

input 1 : Welcome to the JavaProgramTo.com blog
output 1 : emocleW ot eht moc.oTmargorPavaJ golb 

input 2 : This is part of String interview programs
output 2 : sihT si trap fo gnirtS weivretni smargorp 


3. Using Java 8 Functional Programming


Java 8 Stream api have come up with the new methods that follow functional programming. Now, let us see how we can reverse each word in the string without changing the order of the words.

Pattern class introduced with a stream method splitAsStream() which returns a Stream of Strings. Next, use the map() method to do reverse the string using StringBuilder.reverse() method. Finally, invoke the Collectors.joining(" ") which will collect all strings from the map() method and concatenate them with empty space " " by each word.


Java 8 map() examples

Let us take a look at the Java 8 example program.

First, need to create a Pattern instance to identify the empty space using a regular expression.

This has mainly three steps.

A) Converting input string into the stream.
B) Reversing each word.
C) Merging all reversed words with empty space " "

package com.java.w3schools.blog.java.program.to.strings;

import java.util.regex.Pattern;
import java.util.stream.Collectors;
import java.util.stream.Stream;

/**
 *
 * Reversing each word in string without loosing its initial order of the words
 * using java 8 stream with functional style.
 * 
 * @author javaprogramto.com
 *
 */
public class ReverseWordsJava8Streams {

 // pattern matches to the given delimiter (" ")
 private static final Pattern pattern = Pattern.compile(" +");

 public static void main(String[] args) {

  System.out.println("Java 8 program : ");
  String input1 = "java pattern and stream api";
  String output1 = reverseWordsWithStringBuilder(input1);
  System.out.println(" output 1 : " + output1);

  String input2 = "reversing using java 8 streams";
  String output2 = reverseWordsWithStringBuilder(input2);
  System.out.println(" output 2 : " + output2);

 }

 public static String reverseWordsWithStringBuilder(String input) {

  // step 1: converting input string into stream.
  Stream<String> stream = pattern.splitAsStream(input);

  // step 2: reversing each word.
  Stream<StringBuilder> intermeidateOutput = stream.map(word -> new StringBuilder(word).reverse());

  // step 3: merging all reversed words with empty space " "
  String reversedInput = intermeidateOutput.collect(Collectors.joining(" "));

  return reversedInput;
 }

}

Output:

Java 8 program : 
 output 1 : avaj nrettap dna maerts ipa
 output 2 : gnisrever gnisu avaj 8 smaerts

4. Possible Exceptions/Errors:


Here are the problems that come across the implementation. These would be useful when you are trying on your own first and not looking at the solutions.


Examples to reversing each word in a string inplace.
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 1
 at java.base/java.lang.StringLatin1.charAt(StringLatin1.java:47)
 at java.base/java.lang.String.charAt(String.java:702)
 at com.java.w3schools.blog.java.program.to.strings.ReverseWordsStringBuilder.reverseWordsWithStringBuilder(ReverseWordsStringBuilder.java:39)
 at com.java.w3schools.blog.java.program.to.strings.ReverseWordsStringBuilder.main(ReverseWordsStringBuilder.java:18)


5. Conclusion


In this article, We've seen how to reverse each word in a string. Example programs are shown using traditional and java 8 functional style programming model.

And also shown the problems faced during the implementation of the programs.

COMMENTS

BLOGGER

About Us

Author: Venkatesh - I love to learn and share the technical stuff.
Name

accumulo,1,ActiveMQ,2,Adsense,1,API,37,ArrayList,16,Arrays,7,Bean Creation,3,Bean Scopes,1,BiConsumer,1,Blogger Tips,1,Books,1,C Programming,1,Collection,5,Collections,22,Collector,1,Command Line,1,Compile Errors,1,Configurations,7,Constants,1,Control Statements,8,Conversions,6,Core Java,81,Corona India,1,Create,2,CSS,1,Date,3,Date Time API,4,Dictionary,1,Difference,1,Download,1,Eclipse,2,Efficiently,1,Error,1,Errors,1,Exception,1,Exceptions,3,Fast,1,Files,9,Float,1,Font,1,Form,1,Freshers,1,Function,3,Functional Interface,2,Garbage Collector,1,Generics,4,Git,4,Grant,1,Grep,1,HashMap,1,HomeBrew,2,HTML,2,HttpClient,2,Immutable,1,Installation,1,Interview Questions,5,Iterate,2,Jackson API,3,Java,29,Java 10,1,Java 11,5,Java 12,5,Java 13,2,Java 14,2,Java 8,66,Java 8 Difference,2,Java 8 Stream Conversions,2,java 8 Stream Examples,3,Java 9,1,Java Conversions,11,Java Design Patterns,1,Java Files,1,Java Program,2,Java Programs,65,java.lang,5,java.util. function,1,jQuery,1,Kotlin,10,Kotlin Conversions,3,Kotlin Programs,6,Lambda,1,lang,29,Leap Year,1,live updates,1,Logging,1,Mac OS,2,Math,1,Maven,1,Method References,1,Mockito,1,MongoDB,3,New Features,1,Operations,1,Optional,6,Oracle,5,Oracle 18C,1,Partition,1,Patterns,1,Programs,1,Property,1,Python,2,Quarkus,1,Read,1,Real Time,1,Recursion,2,Remove,2,Rest API,1,Schedules,1,Serialization,1,Servlet,1,Sort,1,Sorting Techniques,8,Spring,2,Spring Boot,23,Spring Email,1,Spring MVC,1,Streams,21,String,58,String Programs,9,String Revese,1,Swing,1,System,1,Tags,1,Threads,10,Tomcat,1,Tomcat 8,1,Troubleshoot,16,Unix,2,Updates,3,util,5,While Loop,1,
ltr
item
JavaProgramTo.com: Java Program To Reverse Words In String (Reverse only words in input order)
Java Program To Reverse Words In String (Reverse only words in input order)
A quick and practical program to reverse only words in a given string. Example programs using StringBuilder and java 8 streams with splitAsStream(), map(), Collectors.joining() methods.
https://1.bp.blogspot.com/-_K6Ek0OQvX4/XmaOFEkbsNI/AAAAAAAACTY/gIjvmHeLAvU0CkAJLjji9_8_dVfT-WkOQCLcBGAsYHQ/s640/Java%2BProgram%2BTo%2BReverse%2BWords%2BIn%2BString%2B%2528Reverse%2Bonly%2Bwords%2Bin%2Binput%2Border%2529.png
https://1.bp.blogspot.com/-_K6Ek0OQvX4/XmaOFEkbsNI/AAAAAAAACTY/gIjvmHeLAvU0CkAJLjji9_8_dVfT-WkOQCLcBGAsYHQ/s72-c/Java%2BProgram%2BTo%2BReverse%2BWords%2BIn%2BString%2B%2528Reverse%2Bonly%2Bwords%2Bin%2Binput%2Border%2529.png
JavaProgramTo.com
https://www.javaprogramto.com/2020/03/java-string-reverse-words.html
https://www.javaprogramto.com/
https://www.javaprogramto.com/
https://www.javaprogramto.com/2020/03/java-string-reverse-words.html
true
3124782013468838591
UTF-8
Loaded All Posts Not found any posts VIEW ALL Readmore Reply Cancel reply Delete By Home PAGES POSTS View All RECOMMENDED FOR YOU LABEL ARCHIVE SEARCH ALL POSTS Not found any post match with your request Back Home Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sun Mon Tue Wed Thu Fri Sat January February March April May June July August September October November December Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec just now 1 minute ago $$1$$ minutes ago 1 hour ago $$1$$ hours ago Yesterday $$1$$ days ago $$1$$ weeks ago more than 5 weeks ago Followers Follow THIS PREMIUM CONTENT IS LOCKED STEP 1: Share to a social network STEP 2: Click the link on your social network Copy All Code Select All Code All codes were copied to your clipboard Can not copy the codes / texts, please press [CTRL]+[C] (or CMD+C with Mac) to copy Table of Content