当前位置: 首页 > news >正文

每日OJ题_BFS解决最短路③_力扣127. 单词接龙

目录

③力扣127. 单词接龙

解析代码


③力扣127. 单词接龙

127. 单词接龙

难度 困难

字典 wordList 中从单词 beginWord 和 endWord 的 转换序列 是一个按下述规格形成的序列 beginWord -> s1 -> s2 -> ... -> sk

  • 每一对相邻的单词只差一个字母。
  •  对于 1 <= i <= k 时,每个 si 都在 wordList 中。注意, beginWord 不需要在 wordList 中。
  • sk == endWord

给你两个单词 beginWord 和 endWord 和一个字典 wordList ,返回 从 beginWord 到 endWord 的 最短转换序列 中的 单词数目 。如果不存在这样的转换序列,返回 0 。

示例 1:

输入:beginWord = "hit", endWord = "cog", wordList = ["hot","dot","dog","lot","log","cog"]
输出:5
解释:一个最短转换序列是 "hit" -> "hot" -> "dot" -> "dog" -> "cog", 返回它的长度 5。

示例 2:

输入:beginWord = "hit", endWord = "cog", wordList = ["hot","dot","dog","lot","log"]
输出:0
解释:endWord "cog" 不在字典中,所以无法进行转换。

提示:

  • 1 <= beginWord.length <= 10
  • endWord.length == beginWord.length
  • 1 <= wordList.length <= 5000
  • wordList[i].length == beginWord.length
  • beginWordendWord 和 wordList[i] 由小写英文字母组成
  • beginWord != endWord
  • wordList 中的所有字符串 互不相同
class Solution {
public:int ladderLength(string beginWord, string endWord, vector<string>& wordList) {}
};

解析代码

        和力扣433. 最小基因变化一样,如果将每次字符串的变换抽象成图中的两个顶点和一条边的话,问题就变成了边权为 1 的最短路问题。 因此,从起始的字符串开始,来一次 bfs 即可。

class Solution {
public:int ladderLength(string beginWord, string endWord, vector<string>& wordList) {unordered_set<string> wordListHash(wordList.begin(), wordList.end());unordered_set<string> vis;if(!wordListHash.count(endWord))return 0;int ret = 1;queue<string> q;q.push(beginWord);vis.insert(beginWord);while(!q.empty()){++ret;int size = q.size();while(size--){string t = q.front();q.pop();for(int i = 0; i < t.size(); ++i){for(char ch = 'a'; ch <= 'z'; ++ch){string tmp = t;tmp[i] = ch;if(wordListHash.count(tmp) && !vis.count(tmp)){if(tmp == endWord)return ret;q.push(tmp);vis.insert(tmp);}}}}}return 0;}
};

http://www.lryc.cn/news/339798.html

相关文章:

  • 微信小程序英文版:实现一键切换中英双语版(已组件化)
  • openstack之neutron介绍
  • 学习Rust的第三天:猜谜游戏
  • React中子传父的方式及原理
  • 【数据结构与算法】贪心算法及例题
  • 【Origin+Python】使用External Python批量出图代码参考
  • YOLOv8最新改进系列:融合DySample超轻量动态上采样算子,低延迟、高性能,目前最新上采样方法!!!遥遥领先!
  • ChatGPT基础(二) ChatGPT的使用和调优
  • 麒麟 V10 离线 安装 k8s 和kuboard
  • PlayerSettings.WebGL.emscriptenArgs设置无效的问题
  • 项目管理工具——使用甘特图制定项目计划的详细步骤
  • python读取文件数据写入到数据库中,并反向从数据库读取保存到本地
  • 社交媒体数据恢复:Viber
  • 蓝桥杯赛事介绍
  • TypeScript系列之-深度理解基本类型画图讲解
  • Debian
  • 怎么使用JMeter进行性能测试?
  • MySQL:锁的分类
  • 基于springboot实现房屋租赁管理系统设计项目【项目源码+论文说明】
  • 揭秘Redis底层:一窥数据结构的奥秘与魅力
  • 【网站项目】智能停车场管理系统小程序
  • 芒果YOLOv5改进94:检测头篇DynamicHead为目标检测统一检测头:即插即用|DynamicHead检测头,尺度感知、空间感知、任务感知
  • 获奖名单出炉,OurBMC开源大赛总决赛圆满落幕
  • Qt配置外部库(Windows平台)
  • (最新)华为 2024 届实习招聘-硬件通⽤/单板开发——第十一套和十二套
  • js纯前端实现语音播报,朗读功能(2024-04-15)
  • PostgreSQL数据库基础--简易版
  • 前端解析URL的两种方式
  • Linux的学习之路:6、Linux编译器-gcc/g++使用
  • 分享2024 golang学习路线