LeetCode Word Ladder
2016-01-10 13:31
323 查看
Description:
Given two words (beginWord and endWord), and a dictionary's word list, 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 word list
For example,
Given:
beginWord =
endWord =
wordList =
As one shortest transformation is
return its length
Solution:
第一反应就是最短路,dijkstra的做法就是BFS
这里有个小trick,为了省下使用visited数字,每次进入队列的String都直接去掉
Given two words (beginWord and endWord), and a dictionary's word list, 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 word list
For example,
Given:
beginWord =
"hit"
endWord =
"cog"
wordList =
["hot","dot","dog","lot","log"]
As one shortest transformation is
"hit" -> "hot" -> "dot" -> "dog" -> "cog",
return its length
5.
Solution:
第一反应就是最短路,dijkstra的做法就是BFS
这里有个小trick,为了省下使用visited数字,每次进入队列的String都直接去掉
<span style="font-size:18px;">import java.util.*; public class Solution { public int ladderLength(String beginWord, String endWord, Set<String> wordList) { LinkedList<String> queue = new LinkedList<String>(); queue.add(beginWord); wordList.remove(beginWord); int n = beginWord.length(); int step = 0; String cur, neo; char[] cur_char = new char ; while (!queue.isEmpty()) { int size = queue.size(); step++; for (int i = 0; i < size; i++) { cur = queue.poll(); cur_char = cur.toCharArray(); for (int j = 0; j < n; j++) { for (int c = 'a'; c <= 'z'; c++) { if (cur_char[j] == c) continue; cur_char[j] = (char) c; neo = new String(cur_char); if (neo.equals(endWord)) return step + 1; if (wordList.contains(neo)) { queue.add(neo); wordList.remove(neo); } cur_char[j] = cur.charAt(j); } } } } return 0; } }</span>
相关文章推荐
- 【中级篇】Linux下搭建MySQL数据库系统
- 使用shell连接engine
- Ubuntu设置语言为英语
- ubuntu用户切换
- KinectV1+Ubuntu 14.04安装教程
- LeetCode - Path Sum II
- 从零开始写javaweb框架笔记10-搭建轻量级JAVAWEB框架-确定目标
- powerbuilder调用dsoframer.ocx组件及操作 pb内嵌word组件及操作
- 燕十八---CSS画三角形
- Apache2 虚拟主机 详解
- css3实现图片旋转效果
- 选择排序
- Http请求
- 编程语言的故事(一)
- iostat
- HTML5调用摄像头实现拍照功能(兼容各大主流浏览器)
- Google的Java编程风格指南(Java编码规范)
- linux系统下源码安装Apache2.4
- 统计互不相同且无重复数字的三位数个数
- new delete与malloc free之内存管理(1)