
每天学习一点算法 2026/03/20题目单词搜索给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中返回 true 否则返回 false 。单词必须按照字母顺序通过相邻的单元格内的字母构成其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。这道题有点像之前的岛屿数量我们需要遍历网格中所有字符找到符合单词开头的字母然后寻找它上下左右的字符是否匹配单词的下一个字符直到找到所有的字符或者碰到边界如果遍历完网格中的所有字符还没找到就返回 falsefunctionexist(board:string[][],word:string):boolean{letresfalsefunctionhelper(row:number,col:number,index:number){if(board[row][col]#)return// 遇到已经使用过的选择无效// 遇到符合的字符if(board[row][col]word[index]){// 如果已经匹配完成修改结果标识并返回if(indexword.length-1){restruereturn}consttempboard[row][col]// 记录当前位置字符board[row][col]#// 标记已经使用过的字符// 上if(row-10){helper(row-1,col,index1)}// 下if(row1board.length){helper(row1,col,index1)}// 左if(col-10){helper(row,col-1,index1)}// 右if(col1board[0].length){helper(row,col1,index1)}board[row][col]temp// 周围没有匹配的下一个字符此次选择无效恢复此位置字符}return}// 循环遍历网格传入初始字符for(leti0;iboard.length;i){for(letj0;jboard[0].length;j){helper(i,j,0)}}returnres};题目来源力扣LeetCode