Skip to content

Commit 3cc1f3c

Browse files
authored
Update 79-word-search.js
1 parent 4addea6 commit 3cc1f3c

File tree

1 file changed

+40
-0
lines changed

1 file changed

+40
-0
lines changed

79-word-search.js

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,3 +34,43 @@ function dfs(board, x, y, dirs, word, start) {
3434

3535
return false;
3636
}
37+
38+
// another
39+
40+
/**
41+
* @param {character[][]} board
42+
* @param {string} word
43+
* @return {boolean}
44+
*/
45+
const exist = function(board, word) {
46+
if (!word || !board || board.length === 0) return false
47+
const dirs = [[-1, 0], [1, 0], [0, -1], [0, 1]]
48+
for (let row = 0; row < board.length; row++) {
49+
for (let col = 0; col < board[row].length; col++) {
50+
if (searchWord(board, row, col, word, 0, dirs)) return true
51+
}
52+
}
53+
return false
54+
}
55+
56+
const searchWord = (board, row, col, word, widx, dirs) => {
57+
if (widx === word.length) return true
58+
if (
59+
row < 0 ||
60+
col < 0 ||
61+
row === board.length ||
62+
col === board[0].length ||
63+
board[row][col] === null ||
64+
board[row][col] !== word[widx]
65+
) return false
66+
67+
const ch = board[row][col]
68+
board[row][col] = null // mark visited
69+
70+
for (let dir of dirs) {
71+
if (searchWord(board, row + dir[0], col + dir[1], word, widx + 1, dirs)) {
72+
return true
73+
}
74+
}
75+
board[row][col] = ch // recover
76+
}

0 commit comments

Comments
 (0)