class Solution {
public:
void reverse(string& s, int start, int end) {
for(; start < end; start++, end--) {
swap(s[start], s[end]);
}
}
void removeSpace(string& s) {
int slow = 0;
for(int fast = 0; fast < s.size(); fast++) {
if(s[fast] == ' ') continue;
if(slow != 0) s[slow++] = ' ';
while(fast < s.size() && s[fast] != ' ') {
s[slow++] = s[fast++];
}
}
s.resize(slow);
}
string reverseWords(string s) {
removeSpace(s);
reverse(s, 0, s.size() - 1);
int start = 0;
for(int i = 0; i <= s.size(); i++) {
if(s[i] == ' ' || i == s.size()) {
reverse(s, start, i - 1);
start = i + 1;
}
}
return s;
}
};