Leetcode 127. Word Ladder
来源:互联网 发布:淘宝app买家信用 编辑:程序博客网 时间:2024/05/04 14:36
题目大意
给定一个起点单词beginWord
,一个终点单词endWord
,和一个单词列表wordList
,起点单词、终点单词和单词列表中的单词均具有相同的长度。
求从起点单词变化到终点单词的最小过程所涉及的单词数,每次变化可以更改单词的一个字母,并且要求中间过程出现的单词必须出现在单词列表中。
解题思路
使用BFS,从当前单词生成所有可能的下一步,如果下一步单词恰好是终点单词,则返回结果;如果下一步单词在单词列表中,则将其加到BFS的下一层。
注意每个被加入到BFS生成的单词都必须从单词列表中去除,否则会形成循环。
源代码
class Solution {public: int ladderLength(string beginWord, string endWord, unordered_set<string>& wordList) { if (beginWord == endWord) return 0; wordList.insert(endWord); int counter = 0; queue<string> que; que.push(beginWord); que.push(""); string tmp; while (!que.empty()) { tmp = que.front(); que.pop(); if (tmp == "" && !que.empty()) { que.push(""); counter++; continue; } if (tmp == endWord) { return counter + 1; } vector<string> deprecated; for (int ind = 0; ind < tmp.size(); ind++) { char ch = tmp[ind]; for (int k = 0; k < 26; k++) { tmp[ind] = 'a' + k; if (wordList.find(tmp) != wordList.end()) { que.push(tmp); deprecated.push_back(tmp); } } tmp[ind] = ch; } for (int ind = 0; ind < deprecated.size(); ind++) { wordList.erase(deprecated[ind]); } } return 0; }};
0 0
- [LeetCode]127.Word Ladder
- [Leetcode] 127. Word Ladder
- [leetcode] 127.Word Ladder
- Leetcode-127.Word Ladder
- 127. Word Ladder LeetCode
- Leetcode 127. Word Ladder
- LeetCode 127. Word Ladder
- leetcode 127. Word Ladder
- LeetCode 127. Word Ladder
- LeetCode-127.Word Ladder
- Leetcode 127. Word Ladder
- [leetcode] 127. Word Ladder
- [LeetCode] 127. Word Ladder
- 【LeetCode】127. Word Ladder
- LeetCode 127. Word Ladder
- Leetcode-127. Word Ladder
- LeetCode 127. Word Ladder
- Leetcode 127. Word Ladder
- Nginx 四种分配方式——session处理
- Java监听器
- deepin linux + gitbookeditor
- 计算机组成课程设计之二——微程序控制的存储器读写系统设计
- jquery easyui 在子tab页中打开新tab页(关于easyUI在子页面增加显示tabs的一个问题)
- Leetcode 127. Word Ladder
- 400 bad request 解决方法
- Swift 学习笔记 [1] 类型 值 集合 函数 闭包
- Qt总结
- Elasticsearch doc_value认识
- mysql 常用一
- mm_struct简介
- thinkjs之日常积累
- 蓝桥杯练习系统基础练习——字母图形