ACWing 766.去掉多余的空格
题目描述
输入一个字符串,字符串中可能包含多个连续的空格,请将多余的空格去掉,只留下一个空格。
输入格式
共一行,包含一个字符串。
输出格式
输出去掉多余空格后的字符串,占一行。
数据范围
输入字符串的长度不超过 200
。
输入样例
Hello world.This is c language.
输出样例
Hello world.This is c language.
解题思路 O ( n ) O(n) O(n)
题目要求的是输出去掉多余空格的字符串,因此我们可以转换一下思路,把将空格删掉再输出转换为直接输出,但是将多余一个的空格都删去。那么就要判断s[i]
和s[i + 1]
是否都为空格,若不是则输出,s[i]
否则继续判断。因为只需要遍历一遍字符串,所以时间复杂度为
O
(
n
)
O(n)
O(n)。
代码
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int main()
{
string s;
getline(cin,s);
for(int i = 0; i < s.size(); i++){
if(s[i] == ' ' && s[i + 1] == ' ') continue;
cout << s[i];
}
return 0;
}