【题目描述】
Given two words (startandend), and a dictionary, find the length of shortest transformation sequence fromstarttoend, such that:
1.Only one letter can be changed at a time
2.Each intermediate word must exist in the dictionary
给出两个单词(start和end)和一个字典,找到从start到end的最短转换序列
比如:
1.每次只能改变一个字母。
2.变换过程中的中间单词必须在字典中出现。
【注】1、如果没有转换序列则返回0。
2、所有单词具有相同的长度。
3、所有单词都只包含小写字母。
【题目链接】
www.lintcode.com/en/problem/word-ladder/
【题目解析】
这道题是套用BFS同时也利用BFS能寻找最短路径的特性来解决问题。
把每个单词作为一个node进行BFS。当取得当前字符串时,对他的每一位字符进行从a~z的替换,如果在字典里面,就入队,并将下层count++,并且为了避免环路,需把在字典里检测到的单词从字典里删除。这样对于当前字符串的每一位字符安装a~z替换后,在queue中的单词就作为下一层需要遍历的单词了。
正因为BFS能够把一层所有可能性都遍历了,所以就保证了一旦找到一个单词equals(end),那么return的路径肯定是最短的。
【参考答案】