day73(2.1)——leetcode面试经典150

127. 单词接龙

127. 单词接龙

这个跟昨天的题还是有点不一样的,这个如果按照昨天的方法,会超时,因为时间已经到了50000

题目:

题解:

java 复制代码
class Solution {
    public int ladderLength(String beginWord, String endWord, List<String> wordList) {
        //创建队列
        Queue<String> queue = new LinkedList<>();
        //将起始单词放入队列
        queue.offer(beginWord);
        //用map来进行确认是否是有效访问位
        //如果该单词在map中,证明已经访问过
        Map<String, Integer> visted = new HashMap<>();
        visted.put(beginWord, 1);
        //转换步数
        int step = 0;
        //用来确认是否在字典中
        Set<String> wordSet = new HashSet<>(wordList);
        while(queue.size()>0) {
            int size = queue.size();
            step++;
            for(int i=0;i<size;i++) {
                //取出队列的单词
                String t = queue.poll();
                //看是否是endWord
                if(t.equals(endWord)) {
                    return step;
                }

                for(int j=0;j<t.length();j++) {
                    StringBuilder s = new StringBuilder(t);
                    for(char c='a';c<='z';c++) {
                        if(s.charAt(j)==c) {
                            continue;
                        }
                        s.setCharAt(j,c);
                        //如果字典中存在该单词,且该单词没有被访问过
                        if(wordSet.contains(s.toString())&&!visted.containsKey(s.toString())) {
                            //加入队列中
                            queue.offer(s.toString());
                            //将t设置成有效访问位
                            visted.put(s.toString(), 1);
                        }
                    }
                }
            }
        } 
        return 0;
    }
}
相关推荐
汉堡大王95279 小时前
面试必考:手写代码 new 做了什么?从原理到实现全解析
前端·javascript·面试
数智启示录10 小时前
Apache Doris 4.0.8 混合检索实战(第 5 篇):三套系统只返回两条结果,一条 SQL 如何避开交集丢失
大数据·数据库·经验分享·sql·面试
带多刺的玫瑰10 小时前
Leecode#15刷题之三数之和
算法·leetcode·职场和发展
shehuiyuelaiyuehao12 小时前
算法32,连续数组,前缀和+哈希表
算法·leetcode·职场和发展
YonyouHRSaaS12 小时前
AI面试工具怎么选型?2026年企业AI面试系统选型标准是什么?
人工智能·面试·职场和发展·ai面试·ai招聘
Tenifs13 小时前
AI 智能体与大模型应用开发面试题库
人工智能·面试
RisunJan14 小时前
产品经理面试知识点梳理
面试·职场和发展·产品经理
小欣加油15 小时前
Leetcode2058 找出临界点之间的最小和最大距离
数据结构·c++·算法·leetcode·职场和发展
CoderYanger15 小时前
A.每日一题:3345. 最小可整除数位乘积 I
java·数据结构·程序人生·算法·leetcode·面试·学习方法