題目鏈接
127. 單詞接龍
題目描述
解題思路
題目中有個關鍵詞:最短轉換序列的長度,我們知道常見的搜索算法有兩種:DFS和BFS,那麼本題適用哪種算法呢?兩種都適用嗎?
記住題目中如果出現最短關鍵字一定要採用BFS搜索算法去解決,而不是採用和我一樣採用DFS(一開始死磕DFS,搞了一下午還是沒有搞出來!)
下圖是兩種算法的總結:
AC代碼
class Solution {
public boolean cmpStr(String fir,String sed){
if(fir.length() != sed.length()) return false;
int ans = 0;
for(int i = 0; i < fir.length(); i++){
if(fir.charAt(i) != sed.charAt(i)) ans++;
if(ans > 1) return false;
}
return true;
}
public int ladderLength(String beginWord, String endWord, List<String> wordList) {
if(wordList.contains(endWord) == false) return 0;
int ans = 0;
Queue<String> q = new LinkedList<>();
Set<String> s = new HashSet<>();
s.add(beginWord);
q.offer(beginWord);
boolean flag = false;
while(!q.isEmpty()){
int size = q.size();
ans++;
for(int i = 0; i < size; i++){
String temp = q.poll();
if(temp.equals(endWord)){
flag = true;
break;
}
for(int j = 0; j < wordList.size(); j++){
String a = wordList.get(j);
if(cmpStr(a,temp)==true){
if(s.add(a) == true) q.offer(a);
}
}
}
if(flag == true) break;
}
if(flag == true) return ans;
else return 0;
}
}