• LeetCode —— 单词接龙(Python)


    使用字典,降低查找的复杂度。使用list会超时。

     1 class Solution:
     2 
     3     def nextWordsList(self, word, wordDict):
     4         res_list = []
     5         for i in range(len(word)):
     6             for j in string.ascii_lowercase:
     7                 new_word = list(word)
     8                 if j != word[i]:
     9                     new_word[i] = j
    10                     new_word = ''.join(new_word)
    11                     if new_word in wordDict:
    12                         res_list.append(new_word)
    13                         del wordDict[new_word]
    14         return res_list
    15 
    16 
    17     def bfs(self, beginWord, endWord, wordDict):
    18         # 返回一个int
    19         queue = []
    20         queue.append([beginWord, 1])
    21         while queue:
    22             word, step = queue[0][0], queue[0][1]
    23             queue.pop(0)
    24             if word == endWord: return step
    25             # 得到下一次变换一个单词,得到的单词列表
    26             nextWords = self.nextWordsList(word, wordDict)
    27             for j in nextWords:
    28                 queue.append([j, step+1])
    29         return 0
    30     def ladderLength(self, beginWord, endWord, wordList):
    31         """
    32         :type beginWord: str
    33         :type endWord: str
    34         :type wordList: List[str]
    35         :rtype: int
    36         """
    37         if beginWord in wordList: wordList.remove(beginWord)
    38         wordDict = {}
    39         for w in wordList: wordDict[w] = 1
    40         return self.bfs(beginWord, endWord, wordDict)
  • 相关阅读:
    Oracle 创建dblink
    好的博客
    Java项目导出war包 security alert:integrity check error”
    tomcat7.0 处理问题
    项目支持Servlet3.0的新特性
    oracle replace函数
    JavaWeb项目连接Oracle数据库
    LeetCode OJ
    LeetCode OJ
    LeetCode OJ
  • 原文地址:https://www.cnblogs.com/yxh-amysear/p/9575305.html
Copyright © 2020-2023  润新知