Ctrl K

Слова, равные со сдвигом

Средняя
Сдвинуть слово — значит заменить каждую его букву на следующую по алфавиту, причём после z снова идёт a. Например, abc сдвигается в bcd, а xyz — в yza. Слово можно сдвигать сколько угодно раз. Дан список строчных слов words. Объедините в группы слова, которые можно получить друг из друга сдвигами, и верните список групп. Порядок групп и порядок слов внутри группы не важен. Если слово встречается несколько раз, каждое вхождение попадает в свою группу.
Пример 1
words=["dog", "eph", "a", "q", "ace", "bdf"] → [['dog', 'eph'], ['a', 'q'], ['ace', 'bdf']]

dog сдвигом на 1 превращается в eph; любая однобуквенная строка получается из любой другой; ace сдвигается в bdf.

Пример 2
words=["za", "ab", "ba"] → [['za', 'ab'], ['ba']]

Сдвиг za на 1 даёт ab (за z идёт снова a). У ba вторая буква перед первой, а не после, поэтому она в своей группе.

Ограничения
  • 1 ≤ len(words) ≤ 10⁴
  • 1 ≤ len(words[i]) ≤ 50
  • words[i] состоит из строчных латинских букв
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиРазложить анаграммы по группам СредняяРазбиение на слова из словаря СредняяПодпоследовательность только одного слова СредняяФайлы с одинаковым содержимым СредняяПодсветить найденное Средняя
загружаем Python…
Вход
words=["dog", "eph", "a", "q", "ace", "bdf"]
Ожидается
[['dog', 'eph'], ['a', 'q'], ['ace', 'bdf']]

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