这一题写起来很快,但是还是有些细节没有考虑好,拖慢了编程时间。
本题需要注意的问题:
1、删除字符串开始的所有空格;
2、删除字符串结尾的所有空格;
3、删除字符串中间多余的空格;
这题容易只考虑第一个条件忽略后两个条件。
代码:
运行时间:12ms
class Solution {
public:
void reverseWords(string &s) {
if(s == "") return ;
string::iterator itPre = s.begin();
while(itPre != s.end()){
if(*itPre != ' ')
break;
s.erase(itPre);
}
reverse(s.begin(), s.end());
itPre = s.begin();
while(itPre != s.end()){
if(*itPre != ' ')
break;
s.erase(itPre);
}
itPre = s.begin();
string::iterator itBack = s.end();
while(itPre != s.end()){
itBack = find(itPre, s.end(), ' ');
reverse(itPre, itBack);
if(itBack != s.end()){
itPre = itBack + 1;
itBack = itPre;
while(*itBack == ' '){
s.erase(itBack);
}
}
else
itPre = itBack;
}
}
};