Java
public class Solution {
public int ladderLength(String beginWord, String endWord, Set<String> wordList) {
Queue<String> q=new LinkedList<String>();
Set<String> visited=new HashSet<String>();
q.offer(beginWord);
visited.add(beginWord);
int distance=1;
int count=1;
while(count>0){
while(count>0){
//当前Level
char[] s=q.poll().toCharArray();
for(int i=0;i<s.length;i++){
char temp = s[i];
for(char c='a';c<'z';c++){
if(temp==c) continue;
s[i]=c;
String str= new String(s);
if(str.equals(endWord)) return distance+1;
if(str!=beginWord && wordList.contains(str)&&!visited.contains(str)){
q.offer(str);
visited.add(str);
}
}
s[i]=temp;
}
count--;
}
//计算下一个level
distance++;
count=q.size();
}
return 0;
}
}
Last updated
Was this helpful?