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);
}
};