题目描述
766.去掉多余的空格
方法1
利用cin输入时不记录空格的特性
C++ 代码
#include<iostream>
#include<string>
using namespace std;
int main(){
string a;
while(cin>>a){
cout<<a<<" ";
}
return 0;
}
方法2
C++ 代码
#include<iostream>
#include<string>
using namespace std;
int main(){
string a;
getline(cin,a);
for(int i=0;i<a.size();i++){
if(a[i]!=' ')//不是空格,正常输出
cout<<a[i];
//是空格,先输出一个空格,再判断下一个是不是空格
else if(a[i]==' '){
cout<<' ';
while(a[i+1]==' '){
i++;
}
}
}
return 0;
}
方法3(y总
第一类双指针算法
C++ 代码
#include<iostream>
#include<cstring>
using namespace std;
int main(){
string a;
getline(cin,a);
string r;//用于记录输出字符串
for(int i=0;i<a.size();i++){
if(a[i]!=' ')
r+=a[i];//如果不是空格就正常保存
else{
r+=' ';//有空格就保留一个空格
int j=i;
while(j<a.size()&&a[j]==' ')
j++;//j用于寻找多个空格后第一个不是空格的字符
i=j-1;
}
}
cout<<r<<endl;
return 0;
}