class Solution {
public:
void reverseWords(string &s) {
if(s.empty()) return;
//删除字符串头尾连续的空格
while(s[s.size()-1] == ' ') s.erase(s.end()-1, s.end());
while(s[0] == ' ') s.erase(s.begin(), s.begin()+1);
//字符串中间连续的空格留下一个
for(int i = s.size()-1; i > 0;){
if(s[i] == ' ' && s[i-1] == ' ') s.erase(s.begin()+i, s.begin()+i+1);
else --i;
}
//翻转整个句子
reverse(s.begin(), s.end());
//翻转每个单词
int f = 0;
size_t i = 1;
while(i < s.size()){
if(s[i] == ' '){
reverse(s.begin()+f, s.begin()+i);
f = i+1;
}
++i;
}
reverse(s.begin()+f, s.begin()+i);
}
};
09-22
09-22
09-22