Ctrl K

Убрать соседние анаграммы

Лёгкая
Дан список слов entries из строчных латинских букв. Пока это возможно, повторяйте операцию: найдите слово, у которого есть сосед слева, и этот сосед — его анаграмма (состоит из тех же букв в том же количестве, возможно в другом порядке), — и удалите это слово из списка. Верните список, который останется, когда удалять станет нечего. Можно показать, что результат не зависит от того, в каком порядке выполнять удаления.
Пример 1
entries=['stop', 'pots', 'tops', 'spot', 'go', 'og', 'stop'] → ['stop', 'go', 'stop']

«pots», «tops» и «spot» по очереди совпадают по буквам с соседом слева и удаляются, затем так же уходит «og». Последнее «stop» остаётся: его сосед слева теперь «go».

Пример 2
entries=['ab', 'abb', 'bab'] → ['ab', 'abb']

«ab» и «abb» не анаграммы — разное количество букв b. А «bab» — анаграмма «abb», её удаляем.

Пример 3
entries=['moon'] → ['moon']
Ограничения
  • 1 ≤ len(entries) ≤ 10⁵
  • 1 ≤ len(entries[i]) ≤ 10
  • Слова состоят из строчных латинских букв
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиПерекличка по росту ЛёгкаяРазложить анаграммы по группам СредняяПодпоследовательность только одного слова СредняяСамые частые запросы СредняяСлово, выращенное по букве Средняя
загружаем Python…
Вход
entries=['stop', 'pots', 'tops', 'spot', 'go', 'og', 'stop']
Ожидается
['stop', 'go', 'stop']

«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 87 тестов на сервере, включая скрытые.