classSolution: defladderLength(self, beginWord: str, endWord: str, wordList: List[str]) -> int: alphabeta = [chr(i) for i inrange(ord('a'), ord('a')+26)] word_list = set(wordList) level_arr = [beginWord] # 当前层节点 visited = set([beginWord]) # 访问过的结点 res = 0 whilelen(level_arr) > 0: res += 1 level_len = len(level_arr) while level_len > 0: s = level_arr.pop(0) for i inrange(len(s)): for c in alphabeta: new_s = s[:i] + c + s[i+1:] if new_s in word_list and new_s == endWord: return res + 1 if new_s notin word_list or new_s in visited: continue level_arr.append(new_s) visited.add(new_s) level_len -= 1 return0