【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;
    }
}
posted @ 2020-11-08 21:23  控球强迫症  阅读(134)  评论(0编辑  收藏  举报