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

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

示例 2:

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

示例 3:

输入:board = [["A","B","C","E"],["S","F","C","S"],["A","D","E","E"]], word = "ABCB"
输出:false

提示:

  • m == board.length
  • n = board[i].length
  • 1 <= m, n <= 6
  • 1 <= word.length <= 15
  • board 和 word 仅由大小写英文字母组成

思路

先初始化一个v数组,里面记录当前i,j位置的字符是否被访问过,初始都是0,然后深度优先遍历board ,k是word的下标,当k== word.size(),说明找到了word单词,返回true,如果i,j越界,或该位置的字符已经被访问,或者当前位置字母匹配失败,返回false 。能运行到这里,说明i、j没有越界,且没有被访问,并且当前位置字母匹配成功;此时记录visited[i][j] =1,dfs递归i、j位置的上下左右,有一个位置是true,就说明找到了,返回true。递归结束,标记visited[i][j] =0,恢复现场,这个位置可以继续被利用。

代码

class Solution {
public:bool dfs(vector<vector<char>>& board,int i,int j,vector<vector<int>> &v,string &word,int k){if(k==word.size())//每个字母都找到了{return true;}//检查是否出现越界if(i<0||j<0||i>=board.size()||j>=board[0].size()||v[i][j]||board[i][j]!=word[k]){return false;}v[i][j]=1;//把当前位置标记为已访问//看当前位置的上下左右位置是否能匹配上下一个字符bool ans=dfs(board,i+1,j,v,word,k+1)||dfs(board,i-1,j,v,word,k+1)||dfs(board,i,j+1,v,word,k+1)||dfs(board,i,j-1,v,word,k+1);v[i][j]=0;//把当前节点标记为未访问,如果搜索失败当前位置还能继续被利用return ans;}bool exist(vector<vector<char>>& board, string word){int m=board.size(),n=board[0].size();vector<vector<int>> v(m,vector<int>(n,0));//记录i,j位置的字符是否被访问过for(int i=0;i<m;i++){for(int j=0;j<n;j++){if(dfs(board,i,j,v,word,0)){return true;}}}return false;}
};

相关文章:

  • 图论---染色法(判断是否为二分图)
  • 深入解析 SMB 相关命令:smbmap、smbclient、netexec 等工具的使用指南
  • Python爬虫实战:获取网yi新闻网财经信息并做数据分析,以供选股做参考
  • 基于51单片机的超声波液位测量与控制系统
  • PMIC PCA9450 硬件原理全解析:为 i.MX 8M 平台供电的“大脑”
  • 23种设计模式-行为型模式之责任链模式(Java版本)
  • 4/24杂想
  • 30分钟算法题完成
  • 使用命令行加密混淆C#程序
  • python中的logging库详细解析
  • AI超级智能体教程(三)---程序调用AI大模型的四种方式(SpringAI+LangChain4j+SDK+HTTP)
  • 二项式分布html实验
  • Low Poly 风格 | 飞机飞行可视化系统
  • 【计算机视觉】CV实战- 深入解析基于HOG+SVM的行人检测系统:Pedestrian Detection
  • 深入解析Mlivus Cloud核心架构:rootcoord组件的最佳实践与调优指南
  • 防火墙技术深度解析:从包过滤到云原生防火墙的部署与实战
  • 软测面经(私)
  • API/SDK
  • 【金仓数据库征文】金仓数据库:开启未来技术脑洞,探索数据库无限可能
  • 【基于Qt的QQMusic项目演示第一章】从界面交互到核心功能实现
  • 江苏、安徽跨省联动共治“样板间”:进一扇门可办两省事
  • 云南鲁甸县一河滩突然涨水致4死,有人在救人过程中遇难
  • 新东方:2025财年前三季度净利增29%,第四财季海外业务将承压
  • 一季度提高两只医药基金股票仓位,中欧基金葛兰加仓科伦药业、百利天恒
  • 河南省粮食和物资储备局党组书记吴祖明已任省国资委主任
  • 牛市早报|现货黄金价格站上3400美元,上交所召开私募机构座谈会