题目描述
输入一个字符串,字符串中可能包含多个连续的空格,请将多余的空格去掉,只留下一个空格。
输入格式
共一行,包含一个字符串。
输出格式
输出去掉多余空格后的字符串,占一行。
数据范围
输入字符串的长度不超过200。
样例
blablabla
时间复杂度
O(n)
C++ 代码
#include <iostream>
#include <string>
using namespace std;
int main() {
string s;
getline(cin, s);
int cnt = 0, offset = 0; //offset 从一开始多于空格的数量, cnt 现阶段空格数量
char outs[s.size() + 1];
int i;
for (i = 0; i < s.size(); i ++ ) {
if (s[i] != ' ') {
outs[i - offset] = s[i];
cnt = 0;
} else if (s[i] == ' ') {
if (cnt == 0) {
outs[i - offset] = s[i];
cnt ++ ; //更新现在空格计数
} else {
offset ++; //更新之后的非空格字符偏移量
}
}
}
outs[i - offset] = '\0'; //字符串结束
cout << outs << endl;
return 0;
}