Задача. В заданной строке заменить подряд идущие пробелы на один пробел.
Тесты:
Ввод | Вывод | Комментарий |
as fg t | as fg t | Пройден |
rty g uio | rty g uio | Пройден |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
#include <iostream> #include <string> using namespace std; int main() { string a; getline(cin,a); string b; b+=a[0]; for (int i=1; i<a.length(); i++) { if ((a[i]!=' ')|| ((a[i]==' ') and (a[i-1]!=' '))) b+=a[i]; } cout<<b; return 0; } |
Будем записывать подходящие элементы в новую строку. Сразу добавим первый символ, он нам подходит вне зависимости от того, пробел он, или нет. Далее просмотрим каждый символ строки, если он нам подходит, запишем в новую строку. Нулевой элемент уже добавлен, поэтому цикл начинается с единицы, что позволяет проверять предыдущий символ без выхода за границы.
С работой программы можно ознакомиться здесь.