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代码制作二维码(超级简单)