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)
{
int n = s.length();
if(n == 0)
return;
string ans = "";
s = s + " ";
int last = 0;
int i = 0;
while(s[i] == ' ')
{
i++;
last++;
}
s = s + " ";
for(; i<=n; i++)
{
if(s[i] == ' ')
{
ans = s.substr(last, i-last) + " " + ans ;
while(s[i] == ' ')
i++;
last = i;
}
}
i = 0;
while(ans[i] == ' ')
i++;
n = ans.length() - 1;
while(ans[n] == ' ')
n--;
s = ans.substr(i, n-i+1);
}
};