当前位置: 首页 > news >正文

60.单词搜

79. 单词搜
给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。

单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。

 示例 1:

输入:board = [['A','B','C','E'],['S','F','C','S'],['A','D','E','E']], word = "ABCCED"
输出:true

【作者:Krahets】

解题思路:
本问题是典型的回溯问题,需要使用深度优先搜索(DFS)+ 剪枝解决。

深度优先搜索: 即暴力法遍历矩阵中所有字符串可能性。DFS 通过递归,先朝一个方向搜到底,再回溯至上个节点,沿另一个方向搜索,以此类推。
剪枝: 在搜索中,遇到“这条路不可能和目标字符串匹配成功”的情况,例如当前矩阵元素和目标字符不匹配、或此元素已被访问,则应立即返回,从而避免不必要的搜索分支。

image

算法解析:
递归参数: 当前元素在矩阵 board 中的行列索引 i 和 j ,当前目标字符在 word 中的索引 k 。
终止条件:
返回 false : (1) 行或列索引越界 或 (2) 当前矩阵元素与目标字符不同 或 (3) 当前矩阵元素已访问过 ( (3) 可合并至 (2) ) 。
返回 true : k = len(word) - 1 ,即字符串 word 已全部匹配。
递推工作:
标记当前矩阵元素: 将 board[i][j] 修改为 空字符 '' ,代表此元素已访问过,防止之后搜索时重复访问。
搜索下一单元格: 朝当前元素的 上、下、左、右 四个方向开启下层递归,使用 或 连接 (代表只需找到一条可行路径就直接返回,不再做后续 DFS ),并记录结果至 res 。
还原当前矩阵元素: 将 board[i][j] 元素还原至初始值,即 word[k] 。

【归纳】

终止条件  找到 k==n-1 / 找不到 越界/不相等

递归条件 从当前位置上下左右找

走过路径标记+需要恢复现场

【注意】

word是String类型,取word的字符需要word.charAt(i);

board为char[ ][ ]类型,‘0’ 是字符,“0”是字符串

class Solution {char[][] board;String word;public boolean exist(char[][] board, String word) {this.board = board;this.word = word;for (int i = 0; i < board.length; i++)for (int j = 0; j < board[0].length; j++)if (dfs(i, j, 0))   // 逐个元素为word开头 遍历是否是 wordreturn true;return false;}public boolean dfs(int i, int j, int k){if(i>=board.length || i<0|| j>=board[0].length || j<0|| board[i][j] !=word.charAt(k)) return false;if(k ==word.length()-1) return true;board[i][j] = '0';   // 标记遍历过boolean res = dfs(i-1,j,k+1) || dfs(i+1,j,k+1) || dfs(i,j-1,k+1) || dfs(i,j+1,k+1);board[i][j] = word.charAt(k);  // 恢复现场return res;}
}

【确实经典】

http://www.jsqmd.com/news/341212/

相关文章:

  • 深度解析PTC工业软件许可证成本构成与降费策略
  • 线上支付分类指南:API H5 / 伪 H5 / 网关 B2B/B2C
  • 终端渲染天花板:《复杂简单》——小函数创建的『代码诗学』
  • 机器人研学公司哪家强?2026年机器人研学公司推荐与排名,解决个性化与规模化适配痛点 - 品牌推荐
  • 2026年 保安服务推荐排行榜:专业保安派遣、临时保安、物业保安、门卫保安,实力安保团队与定制化服务深度解析 - 品牌企业推荐师(官方)
  • “保险+信托+养老服务”创新落地!平安臻颐年如何定义城芯享老新范式?
  • 2026年机器人研学公司推荐:基于场景痛点与行业应用评测,附权威排名 - 品牌推荐
  • 二维码中的静态码与活码是什么?主要有什么区别?
  • 如何使用EBHelper 简化EdgeBus的代码编写?
  • 2026年2月重磅测评:头部麻将机品牌技术迭代能力与商业适配性全解析 - 品牌推荐
  • 2025中国AI智能体百强唯一BI厂商!白泽连获多项权威奖项与榜单认可
  • 创作的第256天:当技术博客成为我的第二份“原理图”
  • 分析北京政府机关食堂承包专业企业,哪家口碑好 - 工业推荐榜
  • 深入浅出地理解 C# WPF 中的​属性
  • 2026年泉州美术艺考机构口碑排名,纵横美术艺考集训学费情况 - mypinpai
  • OpenClaw是什么?2026年OpenClaw(Clawdbot)一键部署教程
  • 从MOOG产能扩张解析2000亿市场投资机会:商业航天+人形机器人双轮驱动航天伺服行业爆发
  • 2026年福州口碑好的美术艺考培训机构推荐,纵横美术艺考全解析 - 工业设备
  • DeepSeek 崩了?GPT-5.2 灰度内测?手把手教你用“向量引擎”构建永不宕机的 AI 中台(附 Sora2/Veo3 实战源码)
  • 2026年OpenClaw(Clawdbot)快速部署的几种方法
  • 聊聊苏州口碑好的医药车间净化板漆面修复机构,哪家性价比高 - myqiye
  • 2026年猫粮品牌推荐:全阶段科学喂养趋势评测,涵盖幼猫与成猫营养需求 - 品牌推荐
  • 分子模拟耗时久的底层逻辑与科研效率提升方案解析
  • 一文掌握Python四大核心数据结构:变量、结构体、类与枚举 - 教程
  • 2026年清污机市场评测:哪些品牌值得推荐?回转式格栅清污机/精密过滤器微滤机,清污机品牌有哪些 - 品牌推荐师
  • 丝印机哪家强?2025本地口碑公司排行榜出炉,丝印机生产厂家精选优质品牌解析 - 品牌推荐师
  • 网络安全工程师 5 年还是大头兵,身体累心更累,厌倦内卷却无路可去该怎么办?
  • 2026年猫粮品牌推荐:基于权威机构评价,针对肠胃敏感与毛发护理痛点 - 品牌推荐
  • 网络安全每日的工作内容,还不知道你就亏大了!
  • 如何通过FCKEditor实现Word图片粘贴后自动转存至服务器?