Как убрать повторяющиеся символы в строке python
Перейти к содержимому

Как убрать повторяющиеся символы в строке python

  • автор:

Повторяющийся символы в строке в языке Python

Что вы уже пробовали сделать и в чём у вас проблема? Задачка довольно простая, решается «в лоб» перебором символов строки в цикле, плюс один символ в промежуточной переменной хранится. Ну либо чуть хитрее через zip со сдвигом строки.

20 июн 2022 в 9:39

str_1 = input(«Введите строку:») count = 0 symb = » for el in str_1: if str_1.count(el) > count: count = str_1.count(el) symb = el print(el.replace(el, »))

20 июн 2022 в 9:47
Сейчас у меня что то такое)
20 июн 2022 в 9:47

Добавил ваш код в вопрос. Но не уверен про отступы. Не пишите код в комментариях, он там не форматируется нормально. В общем, это неправильный путь, просто попробуйте запоминать предыдущий символ и сравнивать с ним текущий. Потом либо печатайте символ либо не печатайте. Либо копите символы в строке или списке и выводите потом. Заменой строки лучше не пользоваться кроме случаев, когда вам надо какой-то символ совсем из строки удалить, у вас не тот случай.

Удаление всех дубликатов символов из заданной строки в Python

Нам дана строка символов, из которой нужно удалить все дубликаты. При этом порядок символов имеет значение. Каким будет результат?

Input : geeksforgeeks Output : efgkos

Совет: пожалуйста, попробуйте сначала решить эту задачу самостоятельно в своей IDE, а уж потом читать решение.

from collections import OrderedDict def removeDupWithoutOrder(str): return "".join(set(str)) def removeDupWithOrder(str): return "".join(OrderedDict.fromkeys(str)) if __name__ == "__main__": str = "geeksforgeeks" print("Without Order =" , removeDupWithoutOrder(str)) print("With Order EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">Without Order = egfkosr With Order = geksfor

Что делают OrderedDict и fromkeys()?

OrderedDict это словарь, который запоминает порядок вставки ключей. Если новое вхождение перезаписывает существующее вхождение, исходная позиция вставки остается неизменной.

Обратите внимание на следующий отрывок кода:

from collections import OrderedDict ordinary_dictionary = <> ordinary_dictionary['a'] = 1 ordinary_dictionary['b'] = 2 ordinary_dictionary['c'] = 3 ordinary_dictionary['d'] = 4 ordinary_dictionary['e'] = 5 # Output = print(ordinary_dictionary) ordered_dictionary = OrderedDict() ordered_dictionary['a'] = 1 ordered_dictionary['b'] = 2 ordered_dictionary['c'] = 3 ordered_dictionary['d'] = 4 ordered_dictionary['e'] = 5 # Output = print(ordered_dictionary)

fromkeys() создает новый словарь и возвращает список ключей. Ключи для нового словаря берутся из seq, а значения — из value (если заданы). Синтаксис метода fromkeys() — fromkeys(seq[, value]).

  • seq: Это список значений, которые будут использоваться при подготовке ключей для словаря.
  • value: Опционально; если задать, значение будет установлено в качестве value.

Удалить соседние повторяющиеся символы из строки

Учитывая строку, удалите из нее соседние повторяющиеся символы. Другими словами, удалите все последовательные одинаковые символы, кроме одного.

Input: AABBBCDDD

Output: ABCD

Идея состоит в том, чтобы пройтись по строке и для каждого символа сравнить его с предыдущим символом. Если текущий символ отличается от предыдущего символа, сделайте его частью результирующей строки; в противном случае игнорируйте его. Временная сложность этого подхода O(n) , куда n является длиной входной строки и не требует дополнительного пробела.

Ниже приведена реализация этой идеи на C, Java и Python:

Удаление из строки повторяющихся символов

Удаление повторяющихся символов
Множество содержит 7-10 ключевых слов. Программа должна удалить из них все повторяющиеся символы. В.

Удаление повторяющихся пробелов из строки
На вход подается одна строка текста (не больше 255 символов). Нужно вывести эту же строку, удалив.

Удаление повторяющихся символов из строки
Необходимо написать функцию delete_repeats, которая удаляет все повторяюшиеся символы из строки. .

Удаление повторяющихся символов из строки
Есть задание: Отредактировать введенную строку, удаляя из него буквы, которые встречаются заданное.

394 / 122 / 48
Регистрация: 26.10.2013
Сообщений: 734
тип данных set, вам в помощь)
Просто Лис

Эксперт Python

5318 / 3332 / 1021
Регистрация: 17.05.2012
Сообщений: 9,765
Записей в блоге: 9

Может сами попробуете написать? А мы поможем?

1 2 3 4 5 6 7
s = 'aaaabbbaccccdd' new_s = [s[0]] for i in s[1:]: if True: new_s.append(i) print(''.join(new_s))

671 / 474 / 215
Регистрация: 06.09.2013
Сообщений: 1,301
Pain777,

1 2 3
s = "wfewgefedgfggf" r = "".join(set(s)) print(r)

870 / 651 / 250
Регистрация: 10.12.2016
Сообщений: 1,588
set и dict тут не годятся

1 2 3 4 5 6 7 8 9 10
>>> def f(s): out = '' for i in range(len(s) - 1): if s[i] != s[i+1]: out += s[i] if s[-1] != out[-1]: out += s[-1] return out >>> f('qqqwwwqw') 'qwqw' >>>

671 / 474 / 215
Регистрация: 06.09.2013
Сообщений: 1,301

ЦитатаСообщение от vic5710 Посмотреть сообщение

set и dict тут не годятся
Точно, невнимательно прочитал задание

1 2 3 4 5 6
s_in = 'aaaabbbaccccdd' r = [None] for c in s_in: if c != r[-1]: r.append(c) s_out = ''.join(r[1:]) print(s_out)

870 / 651 / 250
Регистрация: 10.12.2016
Сообщений: 1,588
woldemas, изящно

ЦитатаСообщение от vic5710 Посмотреть сообщение

Да вот стараюсь по питонски научится

Меню пользователя @ woldemas

Да, после 20 лет С/С++ сишные шаблоны рвутся трудно 🙂

Меню пользователя vic5710

4973 / 3209 / 1125
Регистрация: 21.03.2016
Сообщений: 7,939

1 2 3 4 5 6
x = 'aaaabbbaccccdd' y = [] for i in x : if i not in y: y.append(i) print(''.join(y))

870 / 651 / 250
Регистрация: 10.12.2016
Сообщений: 1,588
Semen-Semenich, это вариант set, не годится

1 2 3 4 5 6 7 8 9
>> x = 'qqqwwwqw' >>> y = [] >>> for i in x: if not i in y: y += i >>> ''.join(y) 'qw' >>>

4973 / 3209 / 1125
Регистрация: 21.03.2016
Сообщений: 7,939

ЦитатаСообщение от vic5710 Посмотреть сообщение

это вариант set, не годится
где вы видите там set?
а теперь два ответа второй это и есть set, разницу думаю заметите.

1 2 3 4 5 6 7 8 9 10 11
x = 'aaaabbbaccccdd' y = [] for i in x : if i not in y: y.append(i) print(''.join(y)) print(''.join(set(x))) abcd dabc

870 / 651 / 250
Регистрация: 10.12.2016
Сообщений: 1,588

ЦитатаСообщение от Semen-Semenich Посмотреть сообщение

где вы видите там set?
вы эмулировали set — набор уникальных символов в строке
д.б.
4973 / 3209 / 1125
Регистрация: 21.03.2016
Сообщений: 7,939

vic5710, понял свою ошибку. условие как то звучит не конкретно по заданию. надо из непрерывной последовательности одинаковых элементов в строке удалять повторы а не из всей строки

870 / 651 / 250
Регистрация: 10.12.2016
Сообщений: 1,588
Semen-Semenich,

ЦитатаСообщение от Pain777 Посмотреть сообщение

’aaaabbbaccccdd’ -> ’abacd’
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

Удаление повторяющихся символов строки
Здравствуйте,встретился с такой задачей: Создать динамический массив(размер можно вести с.

Удаление повторяющихся символов из строки
В введённой строке необходимо поудалять все повторяющиеся символы: var T:array of char;.

Удаление повторяющихся символов из строки
Доброго времени суток! Вводится строка. Требуется удалить из нее повторяющиеся символы и все.

Поиск и удаление повторяющихся символов из строки (AnsiString)
мож кому пригодиться, мало ли:) AnsiString str="11112334455";///исходная строка AnsiString.

Удаление повторяющихся символов
Дана строка, состоящая из слов, разделенных пробелами (одним или несколькими). Напечатать все.

Удаление повторяющихся символов
Помогите дураку, надо написать программу которая находит повторяющийся символ и удаляет его.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *