雖然知道是使用bfs求樹節點之間的最短路徑問題但是還是碼不出來,看的答案,失敗,具體思路和二叉樹的層次遍歷近似
123import
org.junit.test;45
import j**a.util.*;67
public
class
ladderlength
46if
(start.equals(end))
49//
hashset用於過濾已經使用的dict中的元素,防止再走一遍
50 hashsethashset = new hashset<>();
51//
queue中放每一層的節點
52 linkedlistlinkedlist = new linkedlist<>();
5354
hashset.add(start);
55linkedlist.add(start);
56//
可能dict中沒有end,但是會有end的上一步的word
57dict.add(end);
5859
//下面開始遍歷一層中所有的next,想象成一顆二叉樹的層次遍歷
60int result = 1;
61while (!linkedlist.isempty())
71if
(nextword.equals(end))
74hashset.add(nextword);
75linkedlist.add(nextword);76}
77}78}
79return 0;80}
8182
private string replace(string s, int index, char
c) 87
88private arraylistgetnextwords(string word, setdict)
96 string nextstring =replace(word, j, i);
97if
(dict.contains(nextstring))
100}
101}
102return
nextwords;
103}
104105
@test
106public
void
testgetnextwords()
122123 }
LintCode 120 單詞接龍 廣度優先搜尋
給出兩個單詞 start和end 和乙個字典,找到從start到end的最短轉換序列 比如 每次只能改變乙個字母。變換過程中的中間單詞必須在字典中出現。注意事項 如果沒有轉換序列則返回0。所有單詞具有相同的長度。所有單詞都只包含小寫字母。樣例 給出資料如下 start hit end cog dic...
lintcode 單詞接龍 120
給出兩個單詞 start和end 和乙個字典,找到從start到end的最短轉換序列 比如 每次只能改變乙個字母。變換過程中的中間單詞必須在字典中出現。您在真實的面試中是否遇到過這個題?樣例 給出資料如下 start hit end cog dict hot dot dog lot log 乙個最短...
lintcode 單詞接龍
給出兩個單詞 start和end 和乙個字典,找出從start到end的最短轉換序列,輸出最短序列的長度。變換規則如下 每次只能改變乙個字母。變換過程中的中間單詞必須在字典 現。起始單詞和結束單詞不需要出現在字典中 輸入 start a end c dict a b c 輸出 2 解釋 a c 輸入...