76 BFS解单词接龙

问题描述:给定两个单词(beginWord和endWord)和一个字典,找到从beginWord到endWord的最短转换序列的长度,转换需要遵循一下规则:每次转换只能改变一个字母,转换过程中的中间大慈必须是字典中的单词;说明:如果不存在这样的转换序列,返回0,所有的单词具有相同的长度,所有单词都由小写字母组成,字典中不存在重复的单词,可以假设beginWord和endWord是非空的,且二者不相同。

bfs求解,每一层bfs将所有能考虑到的将单词改变一个字母的单词,且存在于wordDict中,且没有遍历过,则加入队列中,直到找到这个单词或遍历完所有情况。并返回当前层次即可。

public int minStep(String beginWord,String endWord,ListwordDict)
{
SetwordSet=new HashSet<>(wordDict);
Setset=new HashSet<>();
Queuequeue=new LinkedList<>();
set.add(beginWord);
queue.add(beginWord);
int level=0;
while(!queue.isEmpty())
{
int queueSize=queue.size();
for(int i=0;i

你可能感兴趣的:(JAVA刷题500道,宽度优先,算法,java,数据结构)