LeetCode —— Word Ladder
来源:互联网 发布:热血战歌翅膀升阶数据 编辑:程序博客网 时间:2024/06/03 15:45
链接:http://leetcode.com/onlinejudge#question_127
原题:
Given two words (start and end), and a dictionary, find the length of shortest transformation sequence from start to end, such that:
- Only one letter can be changed at a time
- Each intermediate word must exist in the dictionary
For example,
Given:
start = "hit"
end = "cog"
dict = ["hot","dot","dog","lot","log"]
As one shortest transformation is "hit" -> "hot" -> "dot" -> "dog" -> "cog"
,
return its length 5
.
Note:
- Return 0 if there is no such transformation sequence.
- All words have the same length.
- All words contain only lowercase alphabetic characters.
思路:求最短路径,我用的是BFS,如果直接找set中只差一个字母的单词会超时,但是
遍历字母a~z,然后用hash表的优势,就不会超时了。
代码:
class Solution {public: int ladderLength(string start, string end, unordered_set<string> &dict) { // Start typing your C/C++ solution below // DO NOT write int main() function dict.insert(start); dict.insert(end); dict.erase(start); queue<pair<string, int> > q; q.push(pair<string, int>(start, 1)); while (!q.empty()) { pair<string, int> cur = q.front(); if (cur.first == end) return cur.second; q.pop(); for (int n=0; n<(cur.first).size(); n++) { string word = cur.first; int stop = word[n] - 'a'; for (int i=(stop+1)%26; i!=stop; i=(i+1)%26) { word[n] = 'a' + i; if (dict.find(word) != dict.end()) { q.push(pair<string, int>(word, cur.second+1)); dict.erase(word); } } } } return 0; }};
- LeetCode —— Word Ladder
- LeetCode——Word Ladder II
- leetcode 126 —— Word Ladder II
- leetcode 127 —— Word Ladder
- [LeetCode]—Word Ladder 单词递推
- LeetCode127—Word Ladder
- leetcode——127—— Word Ladder
- 【leetcode】String——Word Ladder II(126)
- leetCode——word ladder(Java实现)
- [Leetcode][python]Word Ladder/Word Ladder II
- [Leetcode] Word Ladder
- LeetCode: Word Ladder
- leetcode 84: Word Ladder
- [leetcode] word ladder
- 【leetcode】Word Ladder
- 【leetcode】Word Ladder II
- LeetCode - Word Ladder
- LeetCode之Word Ladder
- ssh 密钥访问机器的脚本 (适合不想用密码访问ssh的懒人)
- 二分法 poj 1064
- 如何使用新浪微博sdk
- 网络编程常见问题总结
- Linux 文件系统基础——块、i节点
- LeetCode —— Word Ladder
- CentOS 修改hostname
- @Required example
- 基因项目小记
- nginx cache
- 链表反转:有两种方式 - 普通、递归
- android本地打包打包工具制作——jar无jvm情况下运行
- Android闹钟程序&屏幕点亮(常亮)及屏幕解锁和锁定
- 设置网络打印机方法