Given an input string, reverse the string word by word.
For example,
Given s = "the sky is blue
",
return "blue is sky the
".
- 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.
class Solution {
public:
void reverseWords(string &s) {
string word;
stack<string> buf;
stringstream ss(s);
while(ss>>word)
{
buf.push(word);
}
string res = "";
bool first = true;
while(!buf.empty())
{
if(!first)
res += " ";
res += buf.top();
buf.pop();
first = false;
}
s = res;
}
};