leetcode--Word Ladder
2015-06-16 20:39
260 查看
Given two words (beginWord and endWord), and a dictionary, find the length of shortest transformation sequence from
beginWord to endWord, such that:
Only one letter can be changed at a time
Each intermediate word must exist in the dictionary
For example,
Given:
start =
end =
dict =
As one shortest transformation is
return its length
Note:
Return 0 if there is no such transformation sequence.
All words have the same length.
All words contain only lowercase alphabetic characters.
beginWord to endWord, 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.
public class Solution { public int ladderLength(String beginWord, String endWord, Set<String> wordDict) { class WordNode{ String word; int step; public WordNode(String word, int step) { super(); this.word = word; this.step = step; } } Queue<WordNode> queue = new LinkedList<WordNode>(); queue.add(new WordNode(beginWord,1)); wordDict.add(endWord); while(!queue.isEmpty()){ WordNode cur = queue.poll(); if(cur.word.equals(endWord)){ return cur.step; }else{ char[] arr = cur.word.toCharArray(); for(int i=0;i<arr.length;i++){ for(int c='a';c<='z';c++){ char temp = arr[i]; if(c!=temp){ arr[i] = (char) c; } String str = new String(arr); if(wordDict.contains(str)){ queue.add(new WordNode(str, cur.step+1)); wordDict.remove(str); } arr[i] = temp; } } } } return 0; } }
相关文章推荐
- RadioGroup 和 RadioButton 点击事件
- 基础知识1
- 三种Python下载url并保存文件的代码
- Activating Google Cloud Storage
- 探索Android该Parcel机制(上)
- 读后感
- ubuntu下搭建NDK环境
- Opencv同时读入多个视频
- Windows Phone 九、SQLite数据库
- Python open()用法
- Android开发过程中创建一个Message对象使用方法区别
- 安装MYSQL出错:a windows service with the name MYSQL already...service解决
- VS2012 C语言dll文件生成和C#调用
- Android 通知栏Notification的整合 全面学习 (一个DEMO让你完全了解它)
- nodejs socket.io初探
- 条件随机场(CRF)原理和实现
- 学习流程图后的想法
- 【剑指offer】面试题八:旋转数组的最小数字
- B - Catch That Cow(BFS)
- 我就纳闷了。。。红黑联盟。。的水印真的好明显,欺负我大csdn