class Solution:
def findLadders(self, beginWord: str, endWord: str, wordList: List[str]) -> List[List[str]]:
if endWord not in wordList:
return []
words=set(wordList)
layer={}
layer[beginWord]=[[beginWord]]
while layer:
newlayer=collections.defaultdict(list)
for w in layer:
if w==endWord:
return layer[w]
for i in range(len(w)):
first=w[:i]
second=w[i+1:]
for c in string.ascii_lowercase:
neww=first+c+second
if neww in words:
newlayer[neww] +=[j+[neww] for j in layer[w]]
words -=set(newlayer.keys())
layer=newlayer
return []
leetcode-126
最新推荐文章于 2024-03-22 13:38:27 发布
该博客介绍了一种算法,通过广度优先搜索(BFS)解决从起始单词到目标单词的最短转换路径问题。在给定的单词列表中,算法寻找从`beginWord`到`endWord`的最短转换序列。如果目标单词不在列表中,则返回空。算法逐步遍历每个单词的字母,替换每个位置的字母以生成新的单词,直到找到目标单词。
摘要由CSDN通过智能技术生成