LeetCode 79. 单词搜索(Word Search)
题目描述
给定一个二维网格和一个单词,找出该单词是否存在于网格中。
单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。
示例:
board =
[
['A','B','C','E'],
['S','F','C','S'],
['A','D','E','E']
] 给定 word = "ABCCED", 返回 true.
给定 word = "SEE", 返回 true.
给定 word = "ABCB", 返回 false.
解题思路
本题可用回溯法来求解。定义一个访问数组初始全部置为0,并定义当前路径长度初始置0,从矩阵第一个字符开始遍历:
- 从当前字符出发,若与字符串对应路径长度的字符相等,就分别向上下左右走一步,并把当前字符访问数组置1,路径长度加1;
- 若当前字符走到了字符串末尾,说明存在一条路径与字符串相等,返回true;
- 若当前字符出发的各条路径都不能找到一条路径与字符串相等,则向当前路径上一步回溯,并把当前字符访问数组置0,路径长度减1
代码
 class Solution {
 public:
     bool exist(vector<vector<char>>& board, string word) {
         if(board.empty()||word=="")
             return false;
         int rows=board.size();
         int cols=board[].size();
         for(int i=;i<rows;i++){
             for(int j=;j<cols;j++){
                 vector<vector<bool>> visit(rows,vector<bool>(cols,false));
                 if(find(visit,board,word,,i,j))
                     return true;
             }
         }
         return false;
     }
     bool find(vector<vector<bool>> &visit, vector<vector<char>>& board, string word, int idx, int row, int col){
         if(idx==word.size())
             return true;
         int rows=board.size();
         int cols=board[].size();
         if(row<rows&&row>=&&col<cols&&col>=&&!visit[row][col]&&board[row][col]==word[idx]){
             visit[row][col]=true;
             bool hasPath=find(visit,board,word,idx+,row+,col)||find(visit,board,word,idx+,row,col+)||
                 find(visit,board,word,idx+,row-,col)||find(visit,board,word,idx+,row,col-);
             if(!hasPath)
                 visit[row][col]=false;
             else
                 return true;
         }
         return false;
     }
 };
LeetCode 79. 单词搜索(Word Search)的更多相关文章
- Java实现 LeetCode 79 单词搜索
		79. 单词搜索 给定一个二维网格和一个单词,找出该单词是否存在于网格中. 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中"相邻"单元格是那些水平相邻或垂直相邻的单元格. ... 
- Leetcode 79.单词搜索
		单词搜索 给定一个二维网格和一个单词,找出该单词是否存在于网格中. 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中"相邻"单元格是那些水平相邻或垂直相邻的单元格.同一个单 ... 
- [Swift]LeetCode79. 单词搜索 | Word Search
		Given a 2D board and a word, find if the word exists in the grid. The word can be constructed from l ... 
- LeetCode——79. 单词搜索
		给定一个二维网格和一个单词,找出该单词是否存在于网格中. 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中"相邻"单元格是那些水平相邻或垂直相邻的单元格.同一个单元格内的字 ... 
- LeetCode 79.单词搜索 - JavaScript
		题目描述:给定一个二维网格和一个单词,找出该单词是否存在于网格中. 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中"相邻"单元格是那些水平相邻或垂直相邻的单元格.同一个单 ... 
- [LeetCode] 79. 单词搜索(DFS,回溯)
		题目 给定一个二维网格和一个单词,找出该单词是否存在于网格中. 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中"相邻"单元格是那些水平相邻或垂直相邻的单元格.同一个单元格 ... 
- Leetcode之回溯法专题-79. 单词搜索(Word Search)
		Leetcode之回溯法专题-79. 单词搜索(Word Search) 给定一个二维网格和一个单词,找出该单词是否存在于网格中. 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元 ... 
- [LeetCode题解]79. 单词搜索
		题目描述 题目:79. 单词搜索 解题思路 遍历 首先找重复性,题目说给定单词是否存在于二维数组中,可以简化为从 (x, y) 走 n 步(n 表示单词长度),查看给定单词是否存在.然后再遍历二维数组 ... 
- [leetcode] 212. 单词搜索 II(Java)
		212. 单词搜索 II 这leetcode的评判机绝对有问题!!同样的代码提交,有时却超时!害得我至少浪费两个小时来寻找更优的答案= =,其实第一次写完的代码就可以过了,靠!!!第207位做出来的 ... 
随机推荐
- 提升scrapy的爬取效率
			增加并发: 默认scrapy开启的并发线程为32个,可以适当进行增加.在settings配置文件中修改CONCURRENT_REQUESTS = 100值为100,并发设置成了为100. 降低日志级别 ... 
- 07 Deque的应用案例-回文检查
			- 回文检测:设计程序,检测一个字符串是否为回文. - 回文:回文是一个字符串,读取首尾相同的字符,例如,radar toot madam. - 分析:该问题的解决方案将使用 deque 来存储字符串 ... 
- JDBC2
			1.JDBC连接池 public class JdbcTemplateDemo2 { //Junit单元测试,可以让方法独立执行 //1. 获取JDBCTemplate对象 private JdbcT ... 
- 本地远程调试Linux 部署的web 项目
			1.在linux tomcat 下面的 bin 目录下增加一个远程调试的命令: declare -x CATALINA_OPTS="-server -Xdebug -Xnoagent -Dj ... 
- Nginx如何配置反向代理
			server { listen 80; server_name 代理域名; location / { proxy_pass 应用域名:应用端口; proxy_set_header Host $host ... 
- 多线程编程-- part 9 信号量:Semaphore
			Semaphore简介 Semaphore是一个计数信号量,它的本质是一个"共享锁". 信号量维护了一个信号量许可集.线程可以通过调用acquire()来获取信号量的许可:当信号量 ... 
- jenkins自动部署代码到多台服务器
			下面讲一下如何通过一台jenkins服务器构建后将代码分发到其他的远程服务器,即jenkins自动部署代码到多台服务器. 1.下载 pulish over ssh 插件 2.系统管理 -> 系统 ... 
- python、mysql三-2:数据类型
			一 介绍 存储引擎决定了表的类型,而表内存放的数据也要有不同的类型,每种数据类型都有自己的宽度,但宽度是可选的 详细参考: http://www.runoob.com/mysql/mysql-data ... 
- MP4 ISO基础媒体文件格式 摘要 1
			目录 Object-structured File Organization 1 File Type Box (ftyp) Box Structures File Structure and gene ... 
- vs2017的主题颜色的配置
			相信很多小伙伴开发的时候很怀念sublime的主题,我也特别的喜欢其中的mono主题,所以闲来无事在vs上调了一下色感觉好看多了.(其实也可以下载主题然后用“导入导出设置但是颜色有点奇葩,还是越简单越 ... 
