Lintcode 120. Word Ladder

bfs的一道題。給出start和end的題,還有一組dict,每次只能變一個字母,求最短用多少個詞可以變過去。例子:
start = "hit"
end = "cog"
dict = ["hot","dot","dog","lot","log"]

我的思路:首先把dict轉化為set,然后把end也放進去。然后建立一個queue來存放轉化的詞和次序,對于start每個字母從abcd一直變下去,如果在dict中,就存到queue中。然后從queue中出來的詞,如果等于end,那么就說明是最短的路徑了。如果不等于end,就繼續(xù)執(zhí)行上述操作。
如果queue為空都沒找到,那說明就沒有這個詞了。
python代碼:

from collections import deque
class Solution:
    """
    @param: start: a string
    @param: end: a string
    @param: dict: a set of string
    @return: An integer
    """
    def ladderLength(self, start, end, dict):
        # write your code here
        diction = set(dict)
        diction.add(end)
        queue = deque()
        queue.append((start, 1))
        while queue:
            word, i = queue.popleft()
            if word == end:
                return i
            for letter in 'abcdefghijklmnopqrstuvwxyz':
                for j in range(len(word)):
                    newword = list(word)
                    if letter != newword[j]:
                        newword[j] = letter
                    newword = ''.join(newword)
                    if newword in diction:
                        queue.append((newword, i+1))
                        diction.remove(newword)
        return 0
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 背景 一年多以前我在知乎上答了有關LeetCode的問題, 分享了一些自己做題目的經驗。 張土汪:刷leetcod...
    土汪閱讀 12,921評論 0 33
  • 動態(tài)規(guī)劃 111. 爬樓梯思路類似斐波那契數(shù)列注意考慮第 0 階的特殊情況 272. 爬樓梯 II思路類似上題,只...
    6默默Welsh閱讀 2,603評論 0 1
  • 一、Python簡介和環(huán)境搭建以及pip的安裝 4課時實驗課主要內容 【Python簡介】: Python 是一個...
    _小老虎_閱讀 6,335評論 0 10
  • 寫在前面的話 代碼中的# > 表示的是輸出結果 輸入 使用input()函數(shù) 用法 注意input函數(shù)輸出的均是字...
    FlyingLittlePG閱讀 3,219評論 0 9
  • 【整理舊文字,記于15年5月某日,看花歸來】 上周爬山回來,宿舍院門口碰到一位相熟的同事夫人,看我大包小包,笑嘻嘻...
    簡叔老魏閱讀 1,500評論 10 51

友情鏈接更多精彩內容