复杂版:
void strspc(string &s){
int l = 0;
int r = s.length()-1;
//用于判断l和r是否扫到除空格以外字符。
int f1 = 0,f2 = 0;
//用l<=r是为了让最后产生一个错位l=r+1,这样可以使得当处于全为空格时不会漏掉。
while (l<=r)
{
if(l<=r&&s[l]==' '){
l++;
}
else
{
f1 = l;
}
if(l<=r&&s[r]==' '){
r--;
}
else{
f2 =1;
}
if(f1&&f2)break;
}
//注意一定要先擦除后半部分,
//因为若先擦除前半部分,则r和length都会变化,而擦除后半部分不影响前半部分的参数。
s.erase(r+1,s.length());
s.erase(0,l);
}
简明版:
void strspc(string &s){
int l = 0;
int r = s.length()-1;
while(l<=r&&s[l]==' ')
l++;
while(l<=r&&s[r]==' ')
r--;
s.erase(r+1,s.length());
s.erase(0,l);
}