@@ -28,20 +28,28 @@ public boolean exist(char[][] board, String word) {
28
28
visited = new boolean [m ][n ];
29
29
for (int i = 0 ; i < m ; i ++) {
30
30
for (int j = 0 ; j < n ; j ++) {
31
- if (word .charAt (0 ) == board [i ][j ] && search (board , word , i , j , 0 )) return true ;
31
+ if (word .charAt (0 ) == board [i ][j ] && search (board , word , i , j , 0 )) {
32
+ return true ;
33
+ }
32
34
}
33
35
}
34
36
return false ;
35
37
}
36
38
37
39
boolean search (char [][] board , String word , int i , int j , int pos ) {
38
- if (pos == word .length ()) return true ;
39
- if (i < 0 || j < 0 || i >= board .length || j >= board [0 ].length || word .charAt (pos ) != board [i ][j ] || visited [i ][j ]) return false ;
40
+ if (pos == word .length ()) {
41
+ return true ;
42
+ }
43
+ if (i < 0 || j < 0 || i >= board .length || j >= board [0 ].length || word .charAt (pos ) != board [i ][j ] || visited [i ][j ]) {
44
+ return false ;
45
+ }
40
46
visited [i ][j ] = true ;
41
47
if (search (board , word , i +1 , j , pos +1 )
42
48
|| search (board , word , i -1 , j , pos +1 )
43
49
|| search (board , word , i , j +1 , pos +1 )
44
- || search (board , word , i , j -1 , pos +1 )) return true ;
50
+ || search (board , word , i , j -1 , pos +1 )) {
51
+ return true ;
52
+ }
45
53
46
54
visited [i ][j ] = false ;
47
55
return false ;
@@ -55,7 +63,9 @@ public boolean exist(char[][] board, String word) {
55
63
for (int i = 0 ; i < m ; i ++){
56
64
for (int j = 0 ; j < n ; j ++){
57
65
boolean [][] visited = new boolean [m ][n ];
58
- if (dfs (board , visited , i , j , word , 0 )) return true ;
66
+ if (dfs (board , visited , i , j , word , 0 )) {
67
+ return true ;
68
+ }
59
69
}
60
70
}
61
71
return false ;
@@ -64,8 +74,9 @@ public boolean exist(char[][] board, String word) {
64
74
final int [] dirs = new int []{0 ,1 ,0 ,-1 ,0 };
65
75
66
76
boolean dfs (char [][] board , boolean [][] visited , int row , int col , String word , int index ){
67
- if (index >= word .length () || word .charAt (index ) != board [row ][col ]) return false ;
68
- else if (index == word .length ()-1 && word .charAt (index ) == board [row ][col ]) {
77
+ if (index >= word .length () || word .charAt (index ) != board [row ][col ]) {
78
+ return false ;
79
+ } else if (index == word .length ()-1 && word .charAt (index ) == board [row ][col ]) {
69
80
visited [row ][col ] = true ;
70
81
return true ;
71
82
}
@@ -74,10 +85,15 @@ else if(index == word.length()-1 && word.charAt(index) == board[row][col]) {
74
85
for (int i = 0 ; i < 4 ; i ++){
75
86
int nextRow = row +dirs [i ];
76
87
int nextCol = col +dirs [i +1 ];
77
- if (nextRow < 0 || nextRow >= board .length || nextCol < 0 || nextCol >= board [0 ].length || visited [nextRow ][nextCol ]) continue ;
88
+ if (nextRow < 0 || nextRow >= board .length || nextCol < 0 || nextCol >= board [0 ].length || visited [nextRow ][nextCol ]) {
89
+ continue ;
90
+ }
78
91
result = dfs (board , visited , nextRow , nextCol , word , index +1 );
79
- if (result ) return result ;
80
- else visited [nextRow ][nextCol ] = false ;//set it back to false if this road doesn't work to allow it for other paths, this is backtracking!!!
92
+ if (result ) {
93
+ return result ;
94
+ } else {
95
+ visited [nextRow ][nextCol ] = false ;//set it back to false if this road doesn't work to allow it for other paths, this is backtracking!!!
96
+ }
81
97
}
82
98
return result ;
83
99
}
0 commit comments