Acwing 766. 去掉多余的空格(双指针算法)
题干:
输入一个字符串,字符串中可能包含多个连续的空格,请将多余的空格去掉,只留下一个空格。
输入格式:
共一行,包含一个字符串。
输出格式:
输出去掉多余空格后的字符串,占一行。
分析:
在字符串的读入中,由于cin和scanf可以自动过滤空格和换行,因此容易得到eazy版本的解题方法,如下:
#include <iostream>
using namespace std;
int main()
{
string s;
while ( cin >> s ) {
cout << s << ;
}
return 0;
}
但是我们并不满足于这种简单的解题方法,
具体方法如下:
#include <iostream>
using namespace std;
int main()
{
string s;
getline ( cin , s );
string r;
for ( int i = 0; i < s.size() ; i++ ){
if ( s[i] != ){
r += s[i];
}else {
r += ;
int j = i;
while ( s[j] == ) j++; //跳过重复的空格
i = j - 1; //注意此时i的值还未+1
}
}
cout << r << endl ;
return 0;
}
(ps:初学者学习记录)
下一篇:
使用Java代码制作二维码(超级简单)
