Skip to content

Commit 15652ff

Browse files
committed
solve: word search
1 parent 5a921e5 commit 15652ff

File tree

1 file changed

+51
-0
lines changed

1 file changed

+51
-0
lines changed

word-search/wogha95.js

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
// TC: O(M * N * 4^W)
2+
// SC: O(MIN)
3+
// W: word.length, MIN: min(M * N, W)
4+
5+
/**
6+
* @param {character[][]} board
7+
* @param {string} word
8+
* @return {boolean}
9+
*/
10+
var exist = function (board, word) {
11+
let result = false;
12+
13+
for (let r = 0; r < board.length; r++) {
14+
for (let c = 0; c < board[0].length; c++) {
15+
dfs(r, c, 0);
16+
}
17+
}
18+
19+
return result;
20+
21+
function dfs(row, column, wordIndex) {
22+
if (!isValid(row, column)) {
23+
return;
24+
}
25+
if (board[row][column] !== word[wordIndex]) {
26+
return;
27+
}
28+
if (wordIndex === word.length - 1) {
29+
result = true;
30+
return;
31+
}
32+
33+
const temp = board[row][column];
34+
board[row][column] = "#";
35+
dfs(row + 1, column, wordIndex + 1);
36+
dfs(row - 1, column, wordIndex + 1);
37+
dfs(row, column + 1, wordIndex + 1);
38+
dfs(row, column - 1, wordIndex + 1);
39+
board[row][column] = temp;
40+
}
41+
42+
function isValid(row, column) {
43+
if (row < 0 || board.length <= row) {
44+
return false;
45+
}
46+
if (column < 0 || board[0].length <= column) {
47+
return false;
48+
}
49+
return true;
50+
}
51+
};

0 commit comments

Comments
 (0)