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.
class Solution
{
public:
void reverseWords(string &s)
{
vector<string> word;
int n = s.length();
bool flag = false;
string res = "";
for(int i=0; i<n; i++)
{
if(s[i]==' ' && flag==true)
{
word.push_back(res);
flag = false;
res = "";
}
else if(s[i] != ' ')
{
flag = true;
res +=s[i];
}
}
if(flag)
word.push_back(res);
s = "";
n = word.size()-1;
for(int i=n; i>=0; i--)
{
s = s + word[i];
if(i!=0)
s += " ";
}
}
};