1
1
class Solution {
2
2
private boolean isConnected = false ;
3
3
private Map <String , List <String >> hs ;
4
+
4
5
public List <List <String >> findLadders (String beginWord , String endWord , List <String > wordList ) {
5
6
hs = new HashMap <>(16 );
6
7
List <List <String >> result = new ArrayList <>();
7
- if (!wordList .contains (endWord ))
8
+ if (!wordList .contains (endWord ))
8
9
return result ;
9
10
HashSet <String > dict = new HashSet <>(wordList );
10
11
Set <String > fwd = new HashSet <>();
11
12
fwd .add (beginWord );
12
13
Set <String > bwd = new HashSet <>();
13
14
bwd .add (endWord );
14
15
bfs (fwd , bwd , dict , false );
15
- if (!isConnected ) return result ;
16
+ if (!isConnected ) return result ;
16
17
List <String > temp = new ArrayList <>();
17
18
temp .add (beginWord );
18
19
dfs (result , temp , beginWord , endWord );
19
20
return result ;
20
21
}
21
- private void bfs (Set <String > forward , Set <String > backward , Set <String > dict , boolean swap ){
22
- if (forward .isEmpty () || backward .isEmpty ()) return ;
23
- if (forward .size () > backward .size ()){
22
+
23
+ private void bfs (Set <String > forward , Set <String > backward , Set <String > dict , boolean swap ) {
24
+ if (forward .isEmpty () || backward .isEmpty ()) return ;
25
+ if (forward .size () > backward .size ()) {
24
26
bfs (backward , forward , dict , !swap );
25
27
return ;
26
28
}
27
29
dict .removeAll (forward );
28
30
dict .removeAll (backward );
29
31
Set <String > set3 = new HashSet <>();
30
- for (String str : forward )
32
+ for (String str : forward )
31
33
for (int i = 0 ; i < str .length (); i ++) {
32
34
char [] ary = str .toCharArray ();
33
35
for (char j = 'a' ; j <= 'z' ; j ++) {
@@ -47,18 +49,19 @@ private void bfs(Set<String> forward, Set<String> backward, Set<String> dict, bo
47
49
}
48
50
}
49
51
}
50
- if (!isConnected ) bfs (set3 , backward , dict , swap );
52
+ if (!isConnected ) bfs (set3 , backward , dict , swap );
51
53
}
52
- private void dfs (List <List <String >> result , List <String > temp , String start , String end ){
53
- if (start .equals (end )){
54
+
55
+ private void dfs (List <List <String >> result , List <String > temp , String start , String end ) {
56
+ if (start .equals (end )) {
54
57
result .add (new ArrayList <>(temp ));
55
58
return ;
56
59
}
57
- if (!hs .containsKey (start )) return ;
58
- for (String s : hs .get (start )){
60
+ if (!hs .containsKey (start )) return ;
61
+ for (String s : hs .get (start )) {
59
62
temp .add (s );
60
63
dfs (result , temp , s , end );
61
- temp .remove (temp .size ()- 1 );
64
+ temp .remove (temp .size () - 1 );
62
65
}
63
66
}
64
67
}
0 commit comments