Skip to content

Commit 98285cb

Browse files
committed
🔥 Word Search
1 parent 039fe47 commit 98285cb

File tree

2 files changed

+38
-0
lines changed

2 files changed

+38
-0
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,3 +22,4 @@ Solutions of LeetCode Blind 75 Problems in JavaScript
2222
| [Missing Number]() | | | [:link:](https://leetcode.com/problems/missing-number/) |
2323
| [Reverse Bits]() | | | [:link:](https://leetcode.com/problems/reverse-bits/) |
2424
| [Climbing Stairs](./climbing-stairs.js) | <img src="https://img.shields.io/badge/-Easy-green" /> | `Math`, `Dynamic Programming`, `Memoization` | [:link:](https://leetcode.com/problems/climbing-stairs/) |
25+
| [Word Search](./word-search.js) | <img src="https://img.shields.io/badge/-Medium-orange" /> | `Array`, `Backtracking`, `Matrix` | [:link:](https://leetcode.com/problems/word-search/) |

word-search.js

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
const exist = (board, word) => {
2+
const rows = board.length,
3+
columns = board[0].length,
4+
visited = new Set();
5+
6+
const dfs = (r, c, index) => {
7+
if (index === word.length) return true;
8+
if (
9+
r < 0 ||
10+
c < 0 ||
11+
r >= rows ||
12+
c >= columns ||
13+
board[r][c] !== word[index] ||
14+
visited.has(`${r},${c}`)
15+
)
16+
return false;
17+
18+
visited.add(`${r},${c}`);
19+
let result =
20+
dfs(r - 1, c, index + 1) ||
21+
dfs(r + 1, c, index + 1) ||
22+
dfs(r, c - 1, index + 1) ||
23+
dfs(r, c + 1, index + 1);
24+
visited.delete(`${r},${c}`);
25+
return result;
26+
};
27+
28+
for (let r = 0; r < rows; r++) {
29+
for (let c = 0; c < columns; c++) {
30+
if (dfs(r, c, 0)) {
31+
return true;
32+
}
33+
}
34+
}
35+
36+
return false;
37+
};

0 commit comments

Comments
 (0)