Дана
строка. Преобразуйте все идущие подряд пробелы в один.
Вход. Одна
строка символов с длиной не более 1000.
Выход. Выведите
измененную строку.
Пример входа |
Пример выхода |
d hky k |
d hky k |
обработка строк
Прочитаем
входную строку s. Припишем к ней 0-байт. Будем выводить символ s[i] лишь в том случае, если он и
следующий за ним символы не являются пробелами. В случае присутствия идущих
подряд пробелов будет выведен только один пробел.
Реализация алгоритма
Объявим
входную строку s и выходную строку res.
string s, res;
Читаем
входную строку s. Добавим 0-байт в
конец строки.
getline(cin,s);
s = s + (char)0;
Перебираем
символы строки s кроме последнего 0-байта.
for(int
i = 0; i < s.size() - 1; i++)
{
Если
текущий символ и следующий за ним пробелы, то текущий символ не выводим. Если si – последний символ реальной входной
строки, то si+1 будет равно 0 и мы не выйдем за границы строки.
if (s[i] == ' '
&& s[i+1] == ' ') continue;
Иначе
приписываем текущий символ si к результирующей строке res.
res = res + s[i];
}
Выводим
ответ.
cout << res <<
endl;
Java реализация
import java.util.*;
public class Main
{
public static void main(String[] args)
{
Scanner con = new Scanner(System.in);
String s = con.nextLine();
s = s + (char)0;
String res = "";
for (int i = 0; i < s.length() - 1; i++)
{
if (s.charAt(i) == ' ' && s.charAt(i+1) == ' ') continue;
res = res + s.charAt(i);
}
System.out.println(res);
con.close();
}
}
Python реализация
import re
Читаем входную строку s.
s = input()
Последовательность идущих подряд пробелов заменяем одним
пробелом.
res = re.sub(r'\s+', ' ', s)
Выводим
ответ.
print(res)