【Leetcode】127.單詞接龍(BFS與DFS區別)

題目鏈接

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;
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章