Given an input string, reverse the string word by word.
For 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.
Have you met this question in a real interview?
Solution:
1 public class Solution { 2 public String reverseWords(String s) { 3 s = s.trim(); 4 5 StringBuffer buff = new StringBuffer(); 6 int start = s.length()-1; 7 while (start>=0){ 8 //Search the next work. 9 int end = start; 10 while (end>=0 && s.charAt(end)!=' ') end--; 11 String word = s.substring(end+1,start+1); 12 buff.append(word); 13 if (end>0) buff.append(" "); 14 15 //skip all the following spaces. 16 while (end>=0 && s.charAt(end)==' ') end--; 17 start = end; 18 } 19 20 return buff.toString(); 21 } 22 }