Удаление лишних пробелов

Вводится ненормированная строка, у которой могут быть пробелы в начале, в конце и между словами более одного пробела. Привести ее к нормированному виду, т.е. удалить все пробелы в начале и конце, а между словами оставить только один пробел.

Чтобы удалить все пробелы в начале строки, надо проверять первый символ, не является ли он пробелом, до тех пор, пока он им являться не будет. Если первый символ пробел, то его следует удалять.

Для удаления пробелов в конце используется примерно тот же алгоритм, что и для удаления в начале. Однако надо уменьшать на 1 индекс последнего элемента, если пробел был удален, или постоянно измерять длину строки (значение длины либо совпадает с последним индексом, либо меньше на 1).

Для удаления лишних пробелов внутри строки, надо, посимвольно перебирая строку, проверять, если очередной символ пробел, то не пробел ли следующий за ним. Если это так, то надо взять строку от начала до текущего (пробельного) символа включительно и присоединить к этой части часть строки, начинающуюся после второго пробела и до конца. При этом не надо увеличивать индекс элементов (т.к. может оказаться, что после удаленного пробела есть еще пробелы). Если же очередной символ не пробел или пробел, но после него идет не пробел, то надо перейти к следующему символу строки.

Pascal

удалить пробелы в строке паскаль

var
str: string;
i: byte;
begin
readln(str);
i := 1;
while str[i] = ' ' do
delete(str,i,1);
while str[length(str)] = ' ' do
delete(str, length(str), 1);
i := 2;
while i < length(str) do
if (str[i] = ' ') and (str[i+1] = ' ') then
str := copy(str,1,i) + copy(str,i+2,length(str))
else
i := i + 1;
writeln(str);
end.



drink who I mark ten one dump
drink who I mark ten one dump

Python

python удалить пробелы

s = input()
i = 0
while s[i] == ' ':
s = s[1:]
while s[len(s)-1] == ' ':
s = s[:-1]
i = 1
while i < len(s)-1:
if s[i] == ' ' and s[i+1] == ' ':
s = s[:i+1] + s[i+2:]
else:
i += 1
print(s)



ты что делаешь сейч
ты что делаешь сейч

В Python есть целый ряд строковых функций, позволяющих решить данную задаче проще: split(), join(), strip(), replace(), count().

Простейший вариант:

print(' '.join(input().split()))
КуМир

алг удаление пробелов
нач
лит s
цел i
ввод s
i := 1
нц пока s[i] = " "
s := s[2:длин(s)]
кц
нц пока s[длин(s)] = " "
s := s[1:длин(s)-1]
кц
i := 2
нц пока i < длин(s)
если s[i] = " " и s[i+1] = " " то
s := s[1:i] + s[i+2:длин(s)]
иначе
i := i + 1
все
кц
вывод s
кон



кто где когда и почему
кто где когда и почему

Basic-256


input s$
i = 1
while mid(s$,1,1) = " "
s$ = right(s$,length(s$)-1)
end while

while mid(s$,length(s$),1) = " "
s$ = left(s$,length(s$)-1)
end while

i = 2
while i < length(s$)
if mid(s$,i,1) = " " and mid(s$,i+1,1) = " " then
s$ = left(s$,i) + right(s$,length(s$)-i-1)
else
i = i + 1
endif
end while
print s$



where is ball
where is ball

Оцените статью
Добавить комментарий