问题描述

Given a 2D board and a word, find if the word exists in the grid.

The word can be constructed from letters of sequentially adjacent cell, where "adjacent" cells are those horizontally or vertically neighboring. The same letter cell may not be used more than once.

For example,
Given board =

[
['A','B','C','E'],
['S','F','C','S'],
['A','D','E','E']
]
word = "ABCCED", -> returns true,
word = "SEE", -> returns true,
word = "ABCB", -> returns false.

即在一个给定的字符的二维矩阵中寻找是否有给定的单词。每个字母必须相连,只能出现一次。

思路

对于给定字符串,在二维矩阵中进行深度优先搜索,不过要注意边界的判断。

代码

class Solution {
public:bool exist(vector<vector<char>>& board, string word) {if(board.empty()||board[0].empty()){return false;}    vector<vector<bool>> visited(board.size(),vector<bool>(board[0].size(),false));int i,j;int line=board.size();//int col=board[0].size();for(i=0;i<line;i++){for(j=0;j<board[i].size();j++){if(findword(board,word,visited,i,j,0))return true;}}return false;}bool findword(vector<vector<char>>& board,string word,vector<vector<bool>>& visited,int line,int col,int index){if(index==word.size()) return true;if(col<0||line<0||line>=board.size()||col>=board[0].size()||visited[line][col]||board[line][col]!=word[index])return false;visited[line][col]=true;if(findword(board,word,visited,line-1,col,index+1)) return true;if(findword(board,word,visited,line+1,col,index+1)) return true;if(findword(board,word,visited,line,col-1,index+1)) return true;if(findword(board,word,visited,line,col+1,index+1)) return true;visited[line][col] = false;return false;}
};
因为要求每个字母只能出现一次,所以设置了一个visited数组,来对字母是否出现过进行保存。如果在四个方向都判断是错误的,则设置visited为否。

leetcode79 word serach 解题报告相关推荐

  1. 【LeetCode】127. Word Ladder 解题报告(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 题目地址: https://leetcode.com/problems/word-lad ...

  2. LeetCode 解题报告索引

    最近在准备找工作的算法题,刷刷LeetCode,以下是我的解题报告索引,每一题几乎都有详细的说明,供各位码农参考.根据我自己做的进度持续更新中......                        ...

  3. LeetCode解题报告汇总

    LeetCode解题报告: [LeetCode]1.Two Sum - Yoona - 博客频道 - CSDN.NET [LeetCode]2.Add Two Numbers - Yoona - 博客 ...

  4. 攻防世界XCTF-MISC入门12题解题报告

    MISC属于CTF中的脑洞题,简直就是信息安全界的脑筋急转弯.你说它渣,它也有亮点,不好评说.这块最亮眼的入门题就属隐写术,出题人骚的狠.但是我感觉未来其中一个重点,就是大数据安全,从海量流量中捕获恶 ...

  5. timus 1513. Lemon Tale URAL 解题报告

    timus   1513. Lemon Tale    URAL 解题报告 题目大意:就是一行字符,LB组成,一个检测员呢和L有仇啊,只要是多余K个连续的L出现,那么这条语句就不合法,为此,三名程序猿 ...

  6. 人生第一场CTF的解题报告(部分)

    解题报告 濮元杰部分: 王者归来: 120 场景 小王入职了一段时间,最近有点无聊.Web安全项目不多,白天看着其他项目组的同事忙得热火朝天,小王有点坐不住了,这也许是新人都会有的想法,乐于助人.想到 ...

  7. uscao 线段树成段更新操作及Lazy思想(POJ3468解题报告)

    线段树成段更新操作及Lazy思想(POJ3468解题报告) 标签: treequerybuildn2cstruct 2011-11-03 20:37 5756人阅读 评论(0) 收藏 举报  分类: ...

  8. 解题报告(十八)数论题目泛做(Codeforces 难度:2000 ~ 3000 + )

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量的题解和代码,题目难度不一 ...

  9. 【解题报告系列】超高质量题单 + 题解(ACM / OI)超高质量题解

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我新写的超高质量的题解和代码,题目难度不 ...

  10. 解题报告(三)多项式求值与插值(拉格朗日插值)(ACM / OI)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量的题解和代码,题目难度不一 ...

最新文章

  1. iptables使用方法
  2. c语言变量作用域生命周期,C/C++——C++变量的作用域与生命周期,C语言中变量的作用域和生命周期...
  3. Java集合:ConcurrentHashMap(JDK 1.7 JDK 1.8)
  4. DW1000 TX POWER (发射功率) 解析
  5. Lombok中关于@Data的使用
  6. Docker常见问题总结
  7. 编译原理---代码优化基础(自己看)
  8. 记服务器系统安装中不识别固态硬盘问题
  9. 高等代数-三-消元法
  10. miui linux桌面图标,小米主题编辑器(miui主题编辑工具)下载了最新的正式版v5.3.23...
  11. 100道经典的c语言面试题
  12. matlab保存pgm图形,matlab读写pgm文件
  13. 安装Ubuntu18.10并安装华硕AC57无线网卡驱动
  14. Unified Functional Testing(UFT)15.0.2入门保姆级教程(二),图文详解。QTP
  15. Pandas-时间(二)-数据类型:DatetimeIndex(其中每个元素的类型为:Timestamp)【创建方式:①pd.DatetimeIndex([]);②pd.to_datetime()】
  16. MVC、MVP、MVVM模式的概念与区别
  17. Android基本入门
  18. 最新蓝色网址/公众号导航站源码+Yzmcms内核开发
  19. python除法运算定律_除法运算定律
  20. 《趣谈网络协议》学习笔记 DAY06

热门文章

  1. 基于GD32F1x0手动编程实现简易freertos之任务阻塞延时
  2. 教你PDF怎么压缩的小一点?PDF压缩方法
  3. PCI/PCIe的学习笔记
  4. WiFi 桥接功能 — 基于Linux路由器
  5. 在线供应链系统服务方案:构建企业供应链平台业务、功能、技术管理架构
  6. Linux 文件权限、目录权限
  7. 2022年网络安全行业发展趋势
  8. curl_getinfo函数
  9. 如何修改web浏览器title文字及icon
  10. vocabulary