class Solution {
public:
string reverseWords(string s) {
int k = 0, n = s.size();
for (int i = 0; i < n; i ++ )
{
if (s[i] == ' ') continue;
int j = i, t = k;
while (j < n && s[j] !=' ' ) s[t ++ ] = s[j ++ ];
reverse(s.begin() + k, s.begin() + t); // 将该单词反转
s[t ++ ] = ' '; // 在该单词后面添加一个空格
i = j, k = t;
}
// 由于我们在循环中的每个完整单词后面都添加了一个空格
// 所以这里需要特殊处理掉这个空格
if (k) k -- ;
// 将后面多余的东西删除(注意后面多余的东西包括字符或空格,不一定全都是空格)
s.erase(s.begin() + k, s.end());
reverse(s.begin(), s.end()); // 将整体字符串反转
return s;
}
};