# 151 Reverse Words in a String – Medium

### Problem:

Given an input string, reverse the string word by word.

For example, Given s = “the sky is blue“, return “blue is sky the“.

### Thoughts:

This looks like a very simple problem.

Using Java’s String’s split method into a String array. It is super easy to solve the problem.

I am not very sure what’s the purpose of this problem.

Below is using another approach which is more String manipulation way, iterating characters in String.

### Solutions:

``````public class Solution {
public String reverseWords(String s) {
if (s == null)
return null;
s = s.trim();
String result = "";
String word = "";
for (int i = 0; i < s.length(); i ++){
if (s.charAt(i) == ' '){
while (s.charAt(i) == ' ')
i ++;
result = " " + word + result;
word = "" + s.charAt(i);
}
else{
word +=s.charAt(i);
}
}
result = word + result;
return result;
}
}
``````

Updated: 12/12/2016 Alternative solution.

``````public class Solution {
public String reverseWords(String s) {
int i = 0;
String result = "";
while (i < s.length()) {
if (s.charAt(i) == ' ') {
i ++;
continue;
}
//generate a world
String word = "";
while (i < s.length() && s.charAt(i) != ' ') {
word += s.charAt(i);
i ++;
}
if (result.equals("")) {
result = word;
}
else {
result = word + " " + result;
}
}
return result;
}
}
``````

Alternative solution 2.

``````public class Solution {
public String reverseWords(String s) {
String[] strs = s.split(" ");
String result = "";
for (int i = 0; i < strs.length; i ++) {
if (strs[i].equals("")) {
continue;
}
if (result.equals("")) {
result = strs[i];
}
else {
result = strs[i] + " " + result;
}
}
return result;
}
}
``````