[79] 单词搜索

 1 /**
 2  * @param {character[][]} board
 3  * @param {string} word
 4  * @return {boolean}
 5  */
 6 var exist = function (board, word) {
 7   const yLen = board.length
 8   const xLen = board[0].length
 9   const wLen = word.length
10   const matrix = Array.from(Array(yLen), () => new Array(xLen).fill(true))
11   //方向 左、右、上、下
12   const direction = [
13     { dirX: 1, dirY: 0 },
14     { dirX: -1, dirY: 0 },
15     { dirX: 0, dirY: 1 },
16     { dirX: 0, dirY: -1 },
17   ]
18   const inArea = (x, y) => {
19     return x >= 0 && x < xLen && y >= 0 && y < yLen && matrix[y][x]
20   }
21   const isAns = (x, y, index) => {
22     if (board[y][x] !== word[index]) {
23       return false
24     }
25     index++;
26     if (index === wLen) {
27       return true
28     }
29     matrix[y][x] = false;
30     for (let i = 0; i < direction.length; i++) {
31       const newX = x + direction[i].dirX
32       const newY = y + direction[i].dirY
33       if (inArea(newX, newY) && isAns(newX, newY, index)) {
34         return true
35       }
36     }
37     index--;
38     matrix[y][x] = true;
39     return false;
40   }
41   for (let x = 0; x < xLen; x++) {
42     for (let y = 0; y < yLen; y++) {
43       if (isAns(x, y, 0)) {
44         return true;
45       }
46     }
47   }
48   return false;
49 };

 

posted @ 2023-12-22 16:00  人恒过  阅读(8)  评论(0)    收藏  举报