lintcode,单词接龙
2016-12-22 14:23
218 查看
给出两个单词(start和end)和一个字典,找到从start到end的最短转换序列
比如:
每次只能改变一个字母。
变换过程中的中间单词必须在字典中出现。
注意事项
如果没有转换序列则返回0。
所有单词具有相同的长度。
所有单词都只包含小写字母。
样例
给出数据如下:
start = “hit”
end = “cog”
dict = [“hot”,”dot”,”dog”,”lot”,”log”]
一个最短的变换序列是 “hit” -> “hot” -> “dot” -> “dog” -> “cog”,
返回它的长度 5
一刷没ac
解题思路:把每个string看作节点,如果string之间距离为1说明有连线,相当于找到最短的连线长度。这里的解法是宽搜,用队列存节点,用一个map存访问过的节点,从队列取一个元素,把这个元素的所有距离为1的string找出来加入到队列里(前提是这个str在dict中并且没被访问过企鹅不同于原始的这个元素)。
比如:
每次只能改变一个字母。
变换过程中的中间单词必须在字典中出现。
注意事项
如果没有转换序列则返回0。
所有单词具有相同的长度。
所有单词都只包含小写字母。
样例
给出数据如下:
start = “hit”
end = “cog”
dict = [“hot”,”dot”,”dog”,”lot”,”log”]
一个最短的变换序列是 “hit” -> “hot” -> “dot” -> “dog” -> “cog”,
返回它的长度 5
一刷没ac
解题思路:把每个string看作节点,如果string之间距离为1说明有连线,相当于找到最短的连线长度。这里的解法是宽搜,用队列存节点,用一个map存访问过的节点,从队列取一个元素,把这个元素的所有距离为1的string找出来加入到队列里(前提是这个str在dict中并且没被访问过企鹅不同于原始的这个元素)。
public class Solution { /** * @param start, a string * @param end, a string * @param dict, a set of string * @return an integer */ public int ladderLength(String start, String end, Set<String> dict) { if(start.equals(end)) return 1; Set<String> visited = new HashSet<String>(); LinkedList<String> queue = new LinkedList<String>(); queue.offer(start); dict.add(end); visited.add(start); int res = 1; while(!queue.isEmpty()){ int size = queue.size(); for(int sz = 0; sz < size; sz++){ String str = queue.poll(); for(int i = 0; i < str.length(); i++){ char[] strarr = str.toCharArray(); for(char j = 'a'; j <= 'z'; j++){ strarr[i] = j; String tmp = new String(strarr); if(tmp.equals(end)) return res+1; if(!tmp.equals(str) && !visited.contains(tmp) && dict.contains(tmp)){ visited.add(tmp); queue.add(tmp); } } } } res++; } return 0; } }
相关文章推荐
- ***[Lintcode]Word Ladder 单词接龙
- LintCode 120-单词接龙 广度优先搜索
- LintCode-单词接龙II
- 单词接龙-LintCode
- LintCode_单词接龙
- lintcode-120-单词接龙
- lintcode 单词接龙II
- LINTCODE——单词接龙
- 单词接龙 II-LintCode
- 邮票封面设计 单词接龙
- {CODEVS} 1018 单词接龙(DFS)
- codevs1018 单词接龙(DFS)
- 中兴测试题目-单词字母接龙
- 单词接龙
- **[Lintcode]Word Break单词切分
- 图论欧拉路径问题(单词接龙)
- 【JZOJ 3852】单词接龙
- 单词接龙pascal程序
- 深度优先搜索 之 CODE[VS] 1018 单词接龙 2000年NOIP全国联赛普及组NOIP全国联赛提高组
- 竞赛题目讲解-【NOIP2000复赛 普及组】单词接龙