题目
[reverse-words-in-a-string](https://leetcode.com/problems/reverse-words-in-a-string/)
算法
- 反转单词
- 去掉中间多余的空格,只保留一个
代码
class Solution {
public:
void reverseWords(string &s) {
int i = 0, j = 0, k = 0, wordCount = 0;
while (true) {
while (i < s.size() && s[i] == ' ') ++i;
if (i == s.size()) break;
if (wordCount) s[j++] = ' ';
k = j;
while (i < s.size() && s[i] != ' ') {
s[j] = s[i];
++j; ++i;
}
reverseWord(s, k, j - 1);
++wordCount;
}
s.resize(j);
reverseWord(s, 0, j - 1);
}
void reverseWord(string &s, int i, int j) {
while (i < j) {
char t = s[i];
s[i++] = s[j];
s[j--] = t;
}
}
};