zoukankan      html  css  js  c++  java
  • 【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;
        }
    }
    
  • 相关阅读:
    java基础 类 & 继承
    java基础之 hashmap
    tomcat 详解
    hash算法
    素数
    『战略游戏 最大利润 树形DP』
    『宝藏 状态压缩DP NOIP2017』
    『玩具装箱TOY 斜率优化DP』
    『数组的最大代价 贪心优化DP』
    『最大M子段和 线性DP』
  • 原文地址:https://www.cnblogs.com/XDU-Lakers/p/13945927.html
Copyright © 2011-2022 走看看