[leetcode]Word Ladder @ Python
原题地址:https://oj.leetcode.com/problems/word-ladder/
题意:
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来解决。参考:http://chaoren.is-programmer.com/posts/43039.html 使用BFS, 单词和length一块记录, dict中每个单词只能用一次, 所以用过即删。dict给的是set类型, 检查一个单词在不在其中(word in dict)为O(1)时间。设单词长度为L, dict里有N个单词, 每次扫一遍dict判断每个单词是否与当前单词只差一个字母的时间复杂度是O(N*L), 而每次变换当前单词的一个字母, 看变换出的词是否在dict中的时间复杂度是O(26*L), 所以要选择后者。
代码:
class Solution:
# @param start, a string
# @param end, a string
# @param dict, a set of string!!!dict is a set type!!!
# @return an integer
def ladderLength(self, start, end, dict):
dict.add(end)
q = []
q.append((start, 1))
while q:
curr = q.pop(0)
currword = curr[0]; currlen = curr[1]
if currword == end: return currlen
for i in range(len(start)):
part1 = currword[:i]; part2 = currword[i+1:]
for j in 'abcdefghijklmnopqrstuvwxyz':
if currword[i] != j:
nextword = part1 + j + part2
if nextword in dict:
q.append((nextword, currlen+1));
dict.remove(nextword)
return 0
[leetcode]Word Ladder @ Python的更多相关文章
- [leetcode]Word Ladder II @ Python
		
[leetcode]Word Ladder II @ Python 原题地址:http://oj.leetcode.com/problems/word-ladder-ii/ 参考文献:http://b ...
 - LeetCode:Word Ladder I II
		
其他LeetCode题目欢迎访问:LeetCode结题报告索引 LeetCode:Word Ladder Given two words (start and end), and a dictiona ...
 - [LeetCode] Word Ladder 词语阶梯
		
Given two words (beginWord and endWord), and a dictionary, find the length of shortest transformatio ...
 - [LeetCode] Word Ladder II 词语阶梯之二
		
Given two words (start and end), and a dictionary, find all shortest transformation sequence(s) from ...
 - LeetCode :Word Ladder II  My Solution
		
Word Ladder II Total Accepted: 11755 Total Submissions: 102776My Submissions Given two words (start ...
 - LeetCode: Word Ladder II  解题报告
		
Word Ladder II Given two words (start and end), and a dictionary, find all shortest transformation s ...
 - LeetCode: Word Ladder II [127]
		
[题目] Given two words (start and end), and a dictionary, find all shortest transformation sequence(s) ...
 - LeetCode Word Ladder 找单词变换梯
		
题意:给出两个单词,以及一个set集合,当中是很多的单词.unordered_set是无序的集合,也就是说找的序列也是无序的了,是C++11的标准,可能得升级你的编译器版本了.要求找出一个从start ...
 - [leetcode]Word Search @ Python
		
原题地址:https://oj.leetcode.com/problems/word-search/ 题意: Given a 2D board and a word, find if the word ...
 
随机推荐
- nginx命令大全
			
sudo nginx #打开 nginx nginx -s reload|reopen|stop|quit #重新加载配置|重启|停止|退出 nginx nginx -t #测试配置是否有语法错误 n ...
 - luogu P2757 [国家集训队]等差子序列
			
题目链接 luogu P2757 [国家集训队]等差子序列 题解 线段树好题 我选择暴力 代码 // luogu-judger-enable-o2 #include<cstdio> inl ...
 - 2016-2017 CT S03E06: Codeforces Trainings Season 3 Episode 6(8/13)
			
2016-2017 CT S03E06: Codeforces Trainings Season 3 Episode 6 比赛连接: http://codeforces.com/gym/101124/ ...
 - Codeforces Round #370 (Div. 2) D. Memory and Scores 动态规划
			
D. Memory and Scores 题目连接: http://codeforces.com/contest/712/problem/D Description Memory and his fr ...
 - 无法在web服务器上启动调试,iis未列出与打开的URL匹配的网站
			
错误的原因可能是:在iis的网站上绑定的具体的机器的ip地址. 解决方法:可以在网站上绑定ip地址时选择“全部未分配”项.
 - 李善友《认知升级之第一性原理》--507张PPT全解!_搜狐科技_搜狐网
			
http://www.sohu.com/a/151470602_733114
 - JAVA泛型中的有界类型(extends super)(转)
			
JDK1.5中引入了泛型(Generic)机制.泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数.这种参数类型可以用在类.接口和方法的创建中,分别称为泛型类.泛型接口.泛型方法. Ja ...
 - HAL驱动的串口编程陷阱
			
http://bbs.elecfans.com/jishu_464356_1_1.html 手上有块NUCLEO STM32L053x板子,用来做串口实验,看了下ST的最新库HAL驱动,于是想用HAL ...
 - ubuntu安装LDAP
			
参考文献: https://help.ubuntu.com/12.04/serverguide/openldap-server.html(最主要的) http://www.linuxidc.com/L ...
 - Revit API根据参数类型取得参数的值
			
参数的类型string与int取得的方法有所不同,可以封装成一个函数. //得到参数的值 public static string GetParamVal(Document doc, Paramete ...