Skip to content

Commit 99ca851

Browse files
authored
Update Word Search.java
1 parent 1b81435 commit 99ca851

File tree

1 file changed

+13
-12
lines changed

1 file changed

+13
-12
lines changed

Medium/Word Search.java

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,32 +2,33 @@ class Solution {
22
public static final int[][] DIRS = {{1, 0}, {0, 1}, {-1, 0}, {0, -1}};
33

44
public boolean exist(char[][] board, String word) {
5-
int rows = board.length;
6-
int cols = board[0].length;
5+
char[] letters = word.toCharArray();
76
for (int i = 0; i < board.length; i++) {
87
for (int j = 0; j < board[0].length; j++) {
9-
if (dfs(board, word, 0, new boolean[rows][cols], i, j)) {
8+
if (dfs(board, 0, letters, i, j)) {
109
return true;
1110
}
1211
}
1312
}
1413
return false;
1514
}
1615

17-
private boolean dfs(char[][] board, String word, int idx, boolean[][] visited, int i, int j) {
18-
if (idx == word.length()) {
16+
private boolean dfs(char[][] board, int idx, char[] letters, int i, int j) {
17+
if (idx == letters.length) {
1918
return true;
2019
}
21-
if (i < 0 || i >= board.length || j < 0 || j >= board[0].length || visited[i][j]
22-
|| board[i][j] != word.charAt(idx)) {
20+
if (i < 0 || i >= board.length || j < 0 || j >= board[0].length) {
2321
return false;
2422
}
25-
visited[i][j] = true;
26-
boolean ans = false;
23+
if (board[i][j] != letters[idx]) {
24+
return false;
25+
}
26+
board[i][j] ^= 256;
27+
boolean exists = false;
2728
for (int[] dir : DIRS) {
28-
ans = ans || dfs(board, word, idx + 1, visited, i + dir[0], j + dir[1]);
29+
exists = exists || dfs(board, idx + 1, letters, i + dir[0], j + dir[1]);
2930
}
30-
visited[i][j] = false;
31-
return ans;
31+
board[i][j] ^= 256;
32+
return exists;
3233
}
3334
}

0 commit comments

Comments
 (0)