-
Notifications
You must be signed in to change notification settings - Fork 86
/
Copy pathWord Ladder.java
32 lines (32 loc) · 1.12 KB
/
Word Ladder.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
class Solution {
public int ladderLength(String beginWord, String endWord, List<String> wordList) {
HashSet<String> set=new HashSet<>(wordList);
if(!set.contains(endWord)) return 0;
Queue<String> q=new LinkedList<>();
q.add(beginWord); q.add(null);
HashSet<String> vis=new HashSet<>();
vis.add(beginWord);
int lvl=1;
while(!q.isEmpty()) {
String pop=q.poll();
if(pop==null){
lvl++;
if(!q.isEmpty()) q.add(null);
}else{
char[] str=pop.toCharArray();
for(int i=0;i<str.length; str[i]=pop.charAt(i), i++){
for(char a='a';a<='z';a++){
str[i]=a;
String neigh=new String(str);
if(set.contains(neigh) && !vis.contains(neigh)){
if(neigh.equals(endWord)) return lvl+1;
vis.add(neigh);
q.add(neigh);
}
}
}
}
}
return 0;
}
}