Дана строка. Напишите программу, которая удалит из этой строки все лишние пробелы. Пробел будем считать лишним, если:
- он находится в самом начале строки, до самого первого слова;
- он находится в конце строки, после самого последнего слова;
- несколько пробелов расположены между двумя словами (проще говоря, если слова разделены более чем одним пробелом, тогда все пробелы кроме одного — лишние).
Входные данные
Дана строка [latex]s[/latex] (0 ≤ |S| ≤ 255). Строка содержит только латинские буквы и пробелы.
Выходные данные
Требуется вывести строку без лишних пробелов.
Код
1 2 3 4 5 6 7 8 9 10 11 12 13 |
#include <iostream> #include <string> using namespace std; int main(){ string s; getline(cin, s); for (int i = 0; i < s.length(); i++) if (s[i] == ' ' && s[i + 1] == ' ') {s.erase(i, 1); i = (i - 1);} cout << s << endl; return 0; } |
Код
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
#include <iostream> #include <cstring> using namespace std; const short SIZE = 257; int main(){ int j = 0; char * str1 = new char[SIZE]; char * str2 = new char[SIZE]; cin.getline(str1, SIZE); int space = 0; for (int i = 0; i < strlen(str1); i++) { if (str1[i] == ' '){ while (!space){ // space != 0 str2[j] = ' '; j++; space = 1; } } else { str2[j] = str1[i]; j++; space = 0; } } str2[j] = 0; printf("%s", str2); return 0; } |
Тесты
|
|
||||
Ivanov Maxim |
|
||||
Scott Fitzgerald |
|
||||
Gertruda Stal |
|
||||
John Green |
|
Решение
Первый код написан на string. Вводим строку [latex]s[/latex], которая содержит латинские буквы и пробелы. В цикле рассматриваем все символы строки от начала до конца. В условии после каждого следующего символа ставим пробелы, используем функцию erase, которая удаляет из строки лишние пробелы. Выводим строку.
Второй код написан на cstring. Вводим дополнительную строку того же размера, что и первая строка. В цикле for просматриваем все символы от начала до конца. В условии после каждого следующего символа в первой и второй строках ставим пробелы, присваиваем символы первой и второй строки, выводим вторую строку с помощью printf.