Ctrl K

Имена с обменом первых букв

Сложная
Дан список различных слов words. Из него придумывают двойные имена так: 1. Выбирают два разных слова A и B из списка (порядок важен: пара (A, B) отличается от (B, A)). 2. Меняют местами их первые буквы: получаются слова A′ и B′. 3. Если ни A′, ни B′ нет в исходном списке, то строка «A′ B′» (два слова через пробел) — подходящее имя. Верните количество различных подходящих имён.
Пример 1
words=['moon', 'sun', 'soon'] → 0

Любой обмен «moon» со словом на s превращает «moon» в «soon», а оно уже есть в списке; обмен «sun» и «soon» ничего не меняет. Поэтому ответ 0.

Пример 2
words=['cat', 'dog', 'bat'] → 4

Пара («cat», «dog») даёт «dat» и «cog» — обоих слов нет в списке, это имя «dat cog»; пара («dog», «cat») даёт «cog dat». Так же работают пары с «bat» и «dog». А «cat» и «bat» превращаются друг в друга, поэтому не подходят. Всего 4 имени.

Ограничения
  • 2 ≤ len(words) ≤ 5·10⁴
  • 1 ≤ len(words[i]) ≤ 10
  • words[i] состоит из строчных латинских букв
  • Все слова в words различны
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиСлова для головоломок СложнаяБуквы кратчайших покрытий СложнаяПалиндром после пары правок СредняяСлова с рабочих клавиш ЛёгкаяПлюс одна буква Средняя
загружаем Python…
Вход
words=['moon', 'sun', 'soon']
Ожидается
0

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