描述
给出两个单词(start和end)和一个字典,找出从start到end的最短转换序列,输出最短序列的长度。
变换规则如下:
每次只能改变一个字母。
变换过程中的中间单词必须在字典中出现。(起始单词和结束单词不需要出现在字典中)
样例
1
输入:start = “a”,end = “c”,dict =[“a”,”b”,”c”]
输出:2
解释:
“a”->”c”
2
输入:start =”hit”,end = “cog”,dict =[“hot”,”dot”,”dog”,”lot”,”log”]
输出:5
解释:
“hit”->”hot”->”dot”->”dog”->”cog”
注意事项
如果不存在这样的转换序列,返回 0。
所有单词具有相同的长度。
所有单词只由小写字母组成。
字典中不存在重复的单词。
你可以假设 beginWord 和 endWord 是非空的,且二者不相同。
思路
bfs
使用一个队列,把和start距离为n的依次放入,每次遍历队列中所有元素,如果和end距离为1则可以返回,否则将距离为n+1的放入。
循环条件为队列不为空,如果为空,说明没有这样的转换序列,返回0
问题
使用unodered_set遍历时一直出现溢出报错 于是换成了vector,此问题先放着
代码
1 | class Solution { |
-------------end of filethanks for reading-------------