[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 @   人恒过  阅读(4)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本

阅读目录(Content)

此页目录为空

点击右上角即可分享
微信分享提示