Question
Given an input string, reverse the string word by word.
Example
Given s = "the sky is blue" ,
return "blue is sky the" .
Clarification
- What constitutes a word?
A sequence of non-space characters constitutes a word. - Could the input string contain leading or trailing spaces?
Yes. However, your reversed string should not contain leading or trailing spaces. - How about multiple spaces between two words?
Reduce them to a single space in the reversed string.
Solution
Java
public class Solution {
/**
* @param s : A string
* @return : A string
*/
public String reverseWords(String s) {
// write your code
if (s == null || s.indexOf(" ") == -1) {
return s;
}
StringTokenizer tokens = new StringTokenizer(s);
StringBuilder sb = new StringBuilder();
while (tokens.hasMoreTokens()) {
sb.insert(0, tokens.nextToken());
sb.insert(0, " ");
}
return sb.toString().trim();
}
}