{"id":3430,"date":"2020-04-03T13:19:57","date_gmt":"2020-04-03T05:19:57","guid":{"rendered":"http:\/\/www.sniper97.cn\/?p=3430"},"modified":"2020-04-03T13:19:57","modified_gmt":"2020-04-03T05:19:57","slug":"%e3%80%90leetcode%e3%80%910127-%e5%8d%95%e8%af%8d%e6%8e%a5%e9%be%99","status":"publish","type":"post","link":"http:\/\/www.sniper97.cn\/index.php\/note\/algorithm\/3430\/","title":{"rendered":"\u3010LeetCode\u3011*0127 \u5355\u8bcd\u63a5\u9f99"},"content":{"rendered":"\n<p><a href=\"https:\/\/leetcode-cn.com\/problems\/word-ladder\/\">https:\/\/leetcode-cn.com\/problems\/word-ladder\/<\/a><\/p>\n\n\n<pre class=\"wp-block-preformatted\"># -*- coding:utf-8 -*-<br \/><br \/><em>\"\"\"<br \/><\/em><em>      \u250f\u251b \u253b\u2501\u2501\u2501\u2501\u2501\u251b \u253b\u2513<br \/><\/em><em>      \u2503<\/em><em>\u3000\u3000\u3000\u3000\u3000\u3000<\/em><em> \u2503<br \/><\/em><em>      \u2503<\/em><em>\u3000\u3000\u3000<\/em><em>\u2501<\/em><em>\u3000\u3000\u3000<\/em><em>\u2503<br \/><\/em><em>      \u2503<\/em><em>\u3000<\/em><em>\u2533\u251b<\/em><em>\u3000<\/em><em>  \u2517\u2533<\/em><em>\u3000<\/em><em>\u2503<br \/><\/em><em>      \u2503<\/em><em>\u3000\u3000\u3000\u3000\u3000\u3000<\/em><em> \u2503<br \/><\/em><em>      \u2503<\/em><em>\u3000\u3000\u3000<\/em><em>\u253b<\/em><em>\u3000\u3000\u3000<\/em><em>\u2503<br \/><\/em><em>      \u2503<\/em><em>\u3000\u3000\u3000\u3000\u3000\u3000<\/em><em> \u2503<br \/><\/em><em>      \u2517\u2501\u2513<\/em><em>\u3000\u3000\u3000<\/em><em>\u250f\u2501\u2501\u2501\u251b<br \/><\/em><em>        \u2503<\/em><em>\u3000\u3000\u3000<\/em><em>\u2503   <\/em><em>\u795e\u517d\u4fdd\u4f51<\/em><em><br \/><\/em><em>        \u2503<\/em><em>\u3000\u3000\u3000<\/em><em>\u2503   <\/em><em>\u4ee3\u7801\u65e0<\/em><em>BUG<\/em><em>\uff01<\/em><em><br \/><\/em><em>        \u2503<\/em><em>\u3000\u3000\u3000<\/em><em>\u2517\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2513<br \/><\/em><em>        \u2503<\/em><em>\u3000\u3000\u3000\u3000\u3000\u3000\u3000<\/em><em>    \u2523\u2513<br \/><\/em><em>        \u2503<\/em><em>\u3000\u3000\u3000\u3000<\/em><em>         \u250f\u251b<br \/><\/em><em>        \u2517\u2501\u2513 \u2513 \u250f\u2501\u2501\u2501\u2533 \u2513 \u250f\u2501\u251b<br \/><\/em><em>          \u2503 \u252b \u252b   \u2503 \u252b \u252b<br \/><\/em><em>          \u2517\u2501\u253b\u2501\u251b   \u2517\u2501\u253b\u2501\u251b<br \/><\/em><em>\"\"\"<br \/><\/em>from collections import defaultdict<br \/><br \/>class Solution(object):<br \/>    def ladderLength(self, beginWord, endWord, wordList):<br \/>        <em>\"\"\"<br \/><\/em><em>        <\/em><strong><em>:type<\/em><\/strong><em> beginWord: str<br \/><\/em><em>        <\/em><strong><em>:type<\/em><\/strong><em> endWord: str<br \/><\/em><em>        <\/em><strong><em>:type<\/em><\/strong><em> wordList: List[str]<br \/><\/em><em>        <\/em><strong><em>:rtype<\/em><\/strong><em>: int<br \/><\/em><em>        \"\"\"<br \/><\/em><em>        <\/em>if endWord not in wordList or not endWord or not beginWord or not wordList:<br \/>            return 0<br \/><br \/>        L = len(beginWord)<br \/><br \/>        all_combo_dict = defaultdict(list)<br \/>        for word in wordList:<br \/>            for i in range(L):<br \/>                all_combo_dict[word[:i] + \"*\" + word[i + 1:]].append(word)<br \/><br \/>        queue = [(beginWord, 1)]<br \/>        visited = {beginWord: True}<br \/>        while queue:<br \/>            current_word, level = queue.pop(0)<br \/>            for i in range(L):<br \/>                intermediate_word = current_word[:i] + \"*\" + current_word[i + 1:]<br \/><br \/>                for word in all_combo_dict[intermediate_word]:<br \/>                    if word == endWord:<br \/>                        return level + 1<br \/>                    if word not in visited:<br \/>                        visited[word] = True<br \/>                        queue.append((word, level + 1))<br \/>                all_combo_dict[intermediate_word] = []<br \/>        return 0<br \/><br \/><br \/><br \/>if __name__ == '__main__':<br \/>    beginWord = \"hit\"<br \/>    endWord = \"cog\"<br \/>    wordList = [\"hot\", \"dot\", \"dog\", \"lot\", \"log\", \"cog\"]<br \/>    print(Solution().ladderLength(beginWord, endWord, wordList))<br \/><\/pre>\n\n\n<p><strong>\u601d\u8def\uff1a<\/strong>\u611f\u89c9\u81ea\u5df1\u9000\u6b65\u4e86\u3002\u3002<\/p>\n\n\n<p>\u8fd9\u9053\u9898BFS\uff0c\u7528\u5b57\u5178\u8bb0\u5f55\u5df2\u7ecf\u5339\u914d\u8fc7\u7684\u5355\u8bcd\u9632\u6b62\u51fa\u73b0\u73af\u3002<\/p>\n\n\n<p>\u4e0a\u9762\u7684\u5f88\u591a\u5b57\u5178\u53ef\u4ee5\u66ff\u6362\u6210\u5217\u8868\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>https:\/\/leetcode-cn.com\/problems\/word-ladder\/ # -* [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_mi_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[10],"tags":[],"views":7080,"_links":{"self":[{"href":"http:\/\/www.sniper97.cn\/index.php\/wp-json\/wp\/v2\/posts\/3430"}],"collection":[{"href":"http:\/\/www.sniper97.cn\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.sniper97.cn\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.sniper97.cn\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.sniper97.cn\/index.php\/wp-json\/wp\/v2\/comments?post=3430"}],"version-history":[{"count":0,"href":"http:\/\/www.sniper97.cn\/index.php\/wp-json\/wp\/v2\/posts\/3430\/revisions"}],"wp:attachment":[{"href":"http:\/\/www.sniper97.cn\/index.php\/wp-json\/wp\/v2\/media?parent=3430"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.sniper97.cn\/index.php\/wp-json\/wp\/v2\/categories?post=3430"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.sniper97.cn\/index.php\/wp-json\/wp\/v2\/tags?post=3430"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}