Повторяющийся символы в строке в языке 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, вам в помощь)
Просто Лис
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.
Удаление повторяющихся символов
Дана строка, состоящая из слов, разделенных пробелами (одним или несколькими). Напечатать все.
Удаление повторяющихся символов
Помогите дураку, надо написать программу которая находит повторяющийся символ и удаляет его.