【題目描述】
Given two words (startandend), and a dictionary, find the length of shortest transformation sequence fromstarttoend, such that:
1.Only one letter can be changed at a time
2.Each intermediate word must exist in the dictionary
給出兩個單詞(start和end)和一個字典,找到從start到end的最短轉換序列
比如:
1.每次只能改變一個字母。
2.變換過程中的中間單詞必須在字典中出現。
【注】1、如果沒有轉換序列則返回0。
2、所有單詞具有相同的長度。
3、所有單詞都只包含小寫字母。
【題目鏈接】
www.lintcode.com/en/problem/word-ladder/
【題目解析】
這道題是套用BFS同時也利用BFS能尋找最短路徑的特性來解決問題。
把每個單詞作爲一個node進行BFS。當取得當前字符串時,對他的每一位字符進行從a~z的替換,如果在字典裏面,就入隊,並將下層count++,並且爲了避免環路,需把在字典裏檢測到的單詞從字典裏刪除。這樣對於當前字符串的每一位字符安裝a~z替換後,在queue中的單詞就作爲下一層需要遍歷的單詞了。
正因爲BFS能夠把一層所有可能性都遍歷了,所以就保證了一旦找到一個單詞equals(end),那麼return的路徑肯定是最短的。
【參考答案】
www.jiuzhang.com/solutions/word-ladder/