class Solution {
public:
void reverseWords(string &s) {
int a, b;
int len = s.length();
//注意判断s是否一开始就为空、或者s全为空格
if(!len){
return ;
}
//spaces1
a = 0;
while(s[a] == ' ' && a < len){
a++;
}
s.assign(s, a, len);
if(a >= len){
return ;
}
//reverse1
len = len - a;
a = 0;
b = len - 1;
while(a < b){
s[a] ^= s[b] ^= s[a] ^= s[b];
a++;
b--;
}
//spaces2
a = 0;
while(s[a] == ' '){
a++;
}
s.assign(s, a, len);
s.append(" ");
//spaces3_reverse2_mid
int id = 0;
string temp = s;
a = b = -1;
len = s.length();
for(int i = 0; i < len; i++){
if(s[i] != ' ' && a == -1){
a = i;
}
if(a != -1 && s[i+1] == ' ' && s[i] != ' '){
for(int j = i; j >= a; j--, id++){
temp[id] = s[j];
}
temp[id++] = ' ';
a = -1;
}
}
s.assign(temp, 0, id-1);
}
};
10-01