码迷,mamicode.com
首页 > 其他好文 > 详细

【Leetcode】127.单词接龙(BFS与DFS区别)

时间:2020-11-13 13:14:15      阅读:19      评论:0      收藏:0      [点我收藏+]

标签:单词   flag   https   OLE   解题思路   lang   href   sem   list   

题目链接

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;
    }
}

【Leetcode】127.单词接龙(BFS与DFS区别)

标签:单词   flag   https   OLE   解题思路   lang   href   sem   list   

原文地址:https://www.cnblogs.com/XDU-Lakers/p/13945927.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!