3030package _126_WordLadderII ;
3131
3232import java .util .ArrayList ;
33- import java .util .Arrays ;
3433import java .util .Collections ;
3534import java .util .HashMap ;
3635import java .util .HashSet ;
@@ -52,11 +51,6 @@ public List<List<String>> findLadders(String start, String end, Set<String> dict
5251
5352List <List <String >>result =new ArrayList <>();
5453
55- if (start .equals (end )) {
56- result .add (Arrays .asList (start ,end ));
57- return result ;
58- }
59-
6054// use set for current level instead of queue to avoid calculating ladder for duplicated word
6155Set <String >cur =new HashSet <>();
6256Set <String >visited =new HashSet <>();
@@ -106,6 +100,9 @@ public List<List<String>> findLadders(String start, String end, Set<String> dict
106100private void dfs (String start ,String end ,List <String >path ,Map <String ,List <String >>fatherMap ,List <List <String >>result ) {
107101path .add (end );
108102if (end .equals (start )) {
103+ if (path .size () ==1 ) {
104+ path .add (start );
105+ }
109106result .add (new ArrayList <>(path ));
110107Collections .reverse (result .get (result .size () -1 ));
111108 }else {