Разработчику о работе с 1С:Предприятие, Pascal, Паскаль
Удалить из строки повторяющиеся символы паскаль.
02.06.2017 | Автор Дмитрий
Удалить из строки повторяющиеся символы паскаль.
Алгоритм: создаем новую строку, в ней будем хранить неповторяющиеся символы. Затем сравниваем символы в исходной строке с новой строкой. Если в новой строке нет символа, добавляем в новую строку и продолжаем цикл. Если в новой строке присутствует символ, то в исходной строке удаляем этот символ.
Удаление повторяющихся символов из строки
Как удалить повторяющиеся символы из строки с помощью Python? Например, допустим, у меня есть строка:
Как сделать веревочку:
ПРИМЕЧАНИЕ: порядок не важен
задан 23 марта ’12, 14:03
@AljoshaBre — используйте кнопку «закрыть» и выберите close as dupe и укажите ссылку. Спасибо — Martin Beckett
@AljoshaBre Ни один из этих ответов не гарантирует поддержания порядка. — Marcin
Ссылка на самом деле уже есть. Всего 4 клика. — ulidtko
15 ответы
Если порядок не имеет значения, вы можете использовать
set() создаст набор уникальных букв в строке, и «».join() соединит буквы обратно в строку в произвольном порядке.
Если заказ делает дело, вы можете использовать dict вместо набора, который, начиная с Python 3.7, сохраняет порядок вставки ключей. (В реализации CPython это уже поддерживается в Python 3.6 как деталь реализации.)
в результате получается строка «mpt» . В более ранних версиях Python вы можете использовать collections.OrderedDict , который был доступен начиная с Python 2.7.
ответ дан 31 мар ’20, в 10:03
+ 1: fromkeys() используется не очень часто, но здесь вы найдете ему отличное применение. — Эрик О Лебигот
print «» .join (OrderedDict.fromkeys (foo)) ^ SyntaxError: недопустимый синтаксис — Флик
@flik Да, как уже отмечалось, приведенный выше код предназначен для Python версии 2.7. — Свен Марнах
Удалить соседние повторяющиеся символы из строки
Учитывая строку, удалите из нее соседние повторяющиеся символы. Другими словами, удалите все последовательные одинаковые символы, кроме одного.
Input: AABBBCDDD
Output: ABCD
Идея состоит в том, чтобы пройтись по строке и для каждого символа сравнить его с предыдущим символом. Если текущий символ отличается от предыдущего символа, сделайте его частью результирующей строки; в противном случае игнорируйте его. Временная сложность этого подхода O(n) , куда n является длиной входной строки и не требует дополнительного пробела.
Удаление повторяющихся символов из строки
Здравствуйте, я новичок в кодировании и пишу код, который удаляет любые повторяющиеся символы в строке. Допустим, входной строкой была ABBA, тогда выходной файл должен быть «пустым», так как все дубликаты были удалены. Другой пример: если входной строкой является KKCCD, то выходной символ должен быть «D», так как код удалит дубликаты K и C. Проблема с моим кодом заключается в том, что когда я набираю KKCCD, он возвращает KCD и не удаляет дубликаты полностью. Также, если я наберу «AA», результат возвращается как «A» вместо «Empty». Любая помощь в исправлении моего кода будет высоко ценится. Благодарю.
Решение
Измените дублирующую функцию на эту
Вы удалили дублирующийся символ, но не оригинальный, поэтому это делает второй оператор стирания.
Другие решения
Вы удаляете найденный дубликат, но никогда не удаляете оригинальный символ. Самый эффективный способ достижения вашей цели — использовать алгоритмы STL. Вы можете проверить эту ссылку: Удалить все повторяющиеся символы из строки (STL)
Вообще говоря, я не думаю, что это хорошая идея, чтобы удалить символы из строки, которую вы повторяете. Вместо этого было бы намного лучше и чище построить ваш вывод: