5454. Лестница слов
Hard
2 решили
Даны начальное слово
За один шаг меняется ровно одна буква — две сразу нельзя. Каждое следующее слово, включая конечное, обязано лежать в
Если
Верните длину кратчайшей цепочки — число слов в ней, считая оба конца (замен на один меньше). Нет пути —
beginWord, конечное endWord и словарь wordList. Нужно превратить начало в конец цепочкой слов.За один шаг меняется ровно одна буква — две сразу нельзя. Каждое следующее слово, включая конечное, обязано лежать в
wordList. Само beginWord в словарь класть не обязательно.Если
endWord в словаре нет, «допрыгнуть» до него с последнего промежуточного слова нельзя: верните 0.Верните длину кратчайшей цепочки — число слов в ней, считая оба конца (замен на один меньше). Нет пути —
0. Если начало уже совпадает с концом и конец есть в словаре — 1.beginWord = hit, endWord = cog соседи — слова, отличающиеся ровно одной буквой: hit — hot hot — dot, lot dot — dog, lot lot — log, dot dog — log, cog log — dog, cog пример 1, cog есть в словаре: hit → hot → dot → dog → cog 5 слов hit → hot → lot → log → cog тоже 5 короче нельзя ответ 5 пример 2, тот же граф, но cog убрали из словаря: hit → hot → dot → dog дойти можно hit → hot → lot → log тоже из dog одна буква до cog, из log тоже, но шагать разрешено только в слово из wordList, а cog там нет. Конечное слово само по себе пропуск в словарь не даёт. Дальше некуда → 0
Примеры:
Вход:
{"beginWord": "hit", "endWord": "cog", "wordList": ["hot", "dot", "dog", "lot", "log", "cog"]}
Выход:
5
Объяснение: cog есть в словаре. Одна из кратчайших цепочек: hit → hot → dot → dog → cog. В ней 5 слов (4 замены). hit → hot → lot → log → cog тоже длины 5. Короче пути нет → 5.
Вход:
{"beginWord": "hit", "endWord": "cog", "wordList": ["hot", "dot", "dog", "lot", "log"]}
Выход:
0
Объяснение: Старт и финиш те же, и до dog или log дойти можно: hit → hot → dot → dog. Из dog (и из log) одна буква до cog — кажется, что последний шаг очевиден. Но cog нет в wordList, а без словаря этот шаг запрещён: конечное слово не открывает исключение. Застряли на dog/log → 0.
Вход:
{"beginWord": "a", "endWord": "c", "wordList": ["a", "b", "c"]}
Выход:
2
Объяснение: a и c отличаются одной буквой, c есть в словаре. Цепочка a → c — это уже 2 слова. Через b длиннее, её не берём → 2.
Ограничения:
1 <= beginWord.length <= 10
beginWord, endWord и все слова словаря одной длины
1 <= wordList.length <= 5000
только строчные латинские буквы a–z
Решите эту задачу в браузере
Создайте бесплатный аккаунт — редактор Python, Java, JavaScript и Go, проверка на тестах за секунды.
Комментарии (0)
Зарегистрируйтесь или войдите, чтобы оставить комментарий
Пока нет комментариев. Будьте первым!