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 length5.
Note:
Return 0 if there is no such transformation sequence. All words have the same length. All words contain only lowercase alphabetic characters.
如题,给定一个start和一个end 两个字符串,同时又给出一个dict字典,内部含有若干个不重复的字符串; 例如: start =“hit” end =“cog” dict =[“hot”,“dot”,“dog”,“lot”,“log”] 现在可以获知一条最短的字符串转化路径:“hit” -> “hot” -> “dot” -> “dog” -> “cog” 其长度为5:,因此返回长度5; 值得注意的是: 1、如果没有这样的一条转化路径,则直接返回0; 2、没次字符串转化,只能变动一个字符,不可同时变动多个字符; 3、所有的字符串都只包含小写字符,不用考虑大小写的问题;
这里解题思路要清晰,类似于BFS,不停的去找下一次相邻节点群中是否有节点等于end,如果有,则返回BFS的深度; 1、先将dict中的start去掉,将end加入dict中去; 2、创建一个存放相邻节点的队列q; 3、将start加入队列中; 4、针对每次获取相邻节点,就将需要返回的length+1; 5、针对没次获取到的相邻节点,其实是有多个,所以需要循环去检索这些相邻节点到底在dict中存不存在; 6、如果存在就将该字符串加入q中,同时也加入一个数组中,这个数组记录dict中已经访问过的字符串; 7、最后将所有记录下呗访问过的字符串全部从dict中删除; 8、重复4-7;