Оглавление:
Задача — Удаление из строки повторяющихся символов
— программирование на Pascal, Си, Кумир, Basic-256, Python
Вводится строка. Требуется удалить из нее повторяющиеся символы и все пробелы. Например, если было введено «abc cde def», то должно быть выведено «abcdef».
Проще всего задачу решить, если формировать результирующую строку в другой переменной, а не изменять значение переменной, которой была присвоена введенная строка.
Извлекать каждый символ введенной строки. Если он не встречается в новой строке и не является пробелом, то добавлять его в конец новой строки.
Pascal
var
s1,s2: string;
c: char;
i: byte;
begin
readln(s1);
s2 := »;
for i:=1 to length(s1) do begin
c := s1[i];
if (pos(c,s2) = 0) and (c <> ‘ ‘) then
s2 := s2 + c
end;
writeln(s2);
end. abc cde def
abcdef
Язык Си
#include <string.h>
main() {
char s[100], s_new[100];
char c, i, j;
gets(s);
j = 0;
for (i=0; i<strlen(s); i++) {
c = s[i];
if (strchr(s_new,c) == NULL && c != ‘ ‘) {
s_new[j] = c;
j += 1;
}
}
s_new[j] = »;
puts(s_new);
} cpu gpu mb cooler
cpugmboler
Python
s = input()
s_new = »
for i in range(len(s)):
if s_new.find(s[i]) == -1 and s[i] != ‘ ‘:
s_new += s[i]
print(s_new) a a b d c a c k l c d f
abdcklf
Basic-256
input s$
s_new$ = mid(s$,1,1)
for i=2 to length(s$)
a$ = mid(s$,i,1)
if instr(s_new$,a$) = 0 and a$ <> » » then
s_new$ = s_new$ + a$
endif
next i
print s_new$
Если изначально s_new$ присвоить пустую строку, то вызов функции instr()
вызывает ошибку.