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.
Answer:
class Solution {
public:
void reverseWords(string &s) {
if(!s.empty())
{
stack<string> sta;
istringstream f(s);
string str;
// while(getline(f, str, ' '))
// {
// if (str > " ")
// {
// sta.push(str);
// }
// }
while(f >> str)
{
sta.push(str);
}
string temp = "";
bool em = true;
while (!sta.empty())
{
if (!em)
{
temp += " ";
}
temp += sta.top();
sta.pop();
em = false;
}
s = temp;
}
}
};