Given an input string, reverse the string word by word.
For example,
Given s = "the sky is blue
",
return "blue is sky the
".
Update (2015-02-12):
For C programmers: Try to solve it in-place in O(1) space.
class Solution { public: void reverseWords(string &s) { if(s.empty()) { s.clear(); return ; } int i = 0; stack<string> st; while(i<s.size()) { //将i置于每个单词首字母位置 while(s[i]==' ') i++; if(i==s.size()) break; //将j置于单词末尾处后一位 int j = i; while(s[j]!=' ' && j<s.size()) j++; //将该单词添加入stack st.push(s.substr(i, j-i)); i = j; } //翻转后的单词 s.clear(); while(!st.empty()) { s += st.top()+" "; st.pop(); } s = s.substr(0, s.size()-1); } };