class Solution {
public:
void reverseWords(string &s) {
int begin = 0, end = s.length() - 1;
if(begin > end){
s = "";
return;
}
int pointer = 0, left = 0, right = 0;
while(begin <= end && s[begin] == ' '){
++begin;
}
if(begin > end){
s = "";
return;
}
pointer = begin;
left = begin;
while(pointer <= end){
while(pointer <= end && s[pointer] != ' ') {
s[begin++] = s[pointer++];
}
if(pointer > end){
break;
}
s[begin++] = s[pointer++];
while(pointer <= end && s[pointer] == ' '){
pointer++;
}
}
begin = begin - 1;
while(begin >= 0 && s[begin] == ' '){
--begin;
}
right = begin;
int tmpl = left, tmpr = right;
while(tmpl <= tmpr){
char tmpchar = s[tmpl];
s[tmpl] = s[tmpr];
s[tmpr] = tmpchar;
++tmpl;
--tmpr;
}
pointer = left;
tmpl = left;
while(pointer <= right){
while(pointer <= right && s[pointer] != ' '){
++pointer;
}
tmpr = pointer - 1;
while(tmpl < tmpr){
char tmpchar = s[tmpl];
s[tmpl] = s[tmpr];
s[tmpr] = tmpchar;
++tmpl;
--tmpr;
}
tmpl = pointer + 1;
pointer++;
}
s = s.substr(left, right - left + 1);
}
};
错误1:
queue的清空方式是swap而不是clear
错误2:
树高的判断错误