题目分析
1. Word Ladder和Word Ladder II两题是连续的,基本是同一个问题的两个难度,因此放在一起做了。
2. Word Ladder是要找出一条从Start Word 到 End Word的最短路径,一个比较简单的想法就是建立一张图,描述每个在字典中的词之间的可达性,只有任意两个词间有且仅有一个字母不同的时候是直接可达的,然后用BFS的方式去找到Start Word和End Word之间的最短路径。但是这个做法的问题在于每一次从某一个点扩展新路径的过程都是O(n)的复杂度,而如果词的数量非常多的话,这个做法性能就会很低,最坏的复杂度是O(n^2)的级别。
3. 考虑到字典中给出的所有词的长度都是一样长的条件,可以尝试考虑通过置换每个字母再判断置换后的词是否在字典中来扩展新的节点。如果将每个词的长度看做常量,使用线性扫描的方式来判断词在不在字典内的话这个算法最坏也是O(n^2)的复杂度,而且常数因子应该要比上一个算法的大。
4. 但是判断词在不在字典内的算法可以替换成哈希的方法,如果把这个部分的复杂度视作线性的话这个算法就降到了O(n)的复杂度,但带有一个比较大的常数因子。
5. 于是采用BFS的方式,再加上上面所提到的扩展方式进行求解,可以通过这题。