给定一个二维网格和一个单词,找出该单词是否存在于网格中。

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

示例:

board =
[
  ['A','B','C','E'],
  ['S','F','C','S'],
  ['A','D','E','E']
]

给定 word = "ABCCED", 返回 true
给定 word = "SEE", 返回 true
给定 word = "ABCB", 返回 false

提示:

board 和 word 中只包含大写和小写英文字母。
1 <= board.length <= 200
1 <= board[i].length <= 200
1 <= word.length <= 10^3

思路:回溯法, 一道搜索的题目,有点类似走迷宫,只不过按照给定单词字母顺序来寻找,遍历board中每一个元素,判断与word中的第一个字母是否相同,如果相同则在当前位置上去搜索上下左右相邻的单元格的元素是否和当前字母的下一个字母相同,不在搜索范围内或者字母不同就返回false,当搜索的字母数等于word的长度时,也就表明在board找到了这个word。注意每次判断一个字母要标记当前位置以搜索过,以防止字母重复利用。我选择直接更改board元素,以便在后续的判断中不会重复判断此位置,在搜索结束后改回来就可以了。

class Solution {
public:bool exist(vector<vector<char>>& board, string word) {int h = board.size();int w = board[0].size();for(int i=0;i<h;++i){for(int j=0;j<w;++j){if(core(board, word, 0, i, j, h, w)){return true;}}}return false;}bool core(vector<vector<char>>& board, string &word, int n, int x, int y, int h, int w){if(x < 0 || x > h-1 || y < 0 || y > w-1 || word[n] != board[x][y])return false;if(n == word.length()-1)return true;char temp = board[x][y];board[x][y] = 0;int flag = core(board, word, n+1, x+1, y, h, w)||core(board, word, n+1, x-1, y, h, w)||core(board, word, n+1, x, y+1, h, w)||core(board, word, n+1, x, y-1, h, w);board[x][y] = temp;return flag;}
};

单词搜索—leetcode79相关推荐

  1. LeetCode-79. 单词搜索

    单词搜索 难度:中等 给定一个 m x n 二维字符网格 board 和一个字符串单词 word .如果 word 存在于网格中,返回 true :否则,返回 false . 单词必须按照字母顺序,通 ...

  2. LeetCode 79单词搜索80删除排序数组中的重复项Ⅱ81.搜索旋转排序数组Ⅱ

    新人公众号(求支持):bigsai 专注于Java.数据结构与算法,一起进大厂不迷路! 算法文章题解全部收录在github仓库bigsai-algorithm,求star! 关注回复进群即可加入力扣打 ...

  3. 【每日一题】212. 单词搜索 II

    212. 单词搜索 II 题目描述: 给定一个 m x n 二维字符网格 board 和一个单词(字符串)列表 words,找出所有同时在二维网格和字典中出现的单词. 单词必须按照字母顺序,通过 相邻 ...

  4. LeetCode算法题13:DFS/BFS - 单词搜索

    文章目录 单词搜索 DFS : 小小的优化 总结 单词搜索 题目链接:https://leetcode-cn.com/problems/word-search/ 题目描述: 给定一个 m x n 二维 ...

  5. C++words search单词搜索的算法实现(附完整源码)

    C++words search单词搜索的算法实现 C++words search单词搜索的算法实现完整源码(定义,实现,main函数测试) C++words search单词搜索的算法实现完整源码(定 ...

  6. LeetCode 212. 单词搜索 II(Trie树+DFS)

    1. 题目 给定一个二维网格 board 和一个字典中的单词列表 words,找出所有同时在二维网格和字典中出现的单词. 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中"相邻&qu ...

  7. mysql 相关搜索_MySQL单词搜索相关度排名

    一个单词搜索的相关度排名,这个例子演示了一个单词搜索的相关度排名计算. mysql> CREATE TABLE articles ( -> id INT UNSIGNED AUTO_INC ...

  8. 力扣—— 79/212. 单词搜索

    目录 79 单词搜索 212 单词搜索II 79 单词搜索 class Solution(object):#深度搜索def exist(self, board, word):self.flag=0se ...

  9. Leetcode 79.单词搜索

    Time: 20190901 Type: Medium 题目描述 给定一个二维网格和一个单词,找出该单词是否存在于网格中. 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中"相邻&q ...

最新文章

  1. 这样的“牛”人,绝佳客户最好能多碰上上几个是我们当程序员的好运
  2. Editplus快捷键大全
  3. Vue.js 进入/离开 列表过渡
  4. HTML5中本地数据库(SQLLite)的基础
  5. java如何找重复数字_Java如何找出数组中重复的数字
  6. usb转ttl_[开源]双TYPEC转TTL串口模块
  7. 输入过滤筛选下拉信息(类似百度输入)
  8. 今天来谈谈内容溢出和文字溢出的问题
  9. Eclipse javax.servlet.jsp.PageContext cannot be resolved to a type 错误解决办法
  10. 新浪和腾讯微博开放平台比较
  11. STM32/GD32下用PWM+DMA驱动WS2812B RGB全彩灯珠
  12. 图像的简单copyPaste实现
  13. 阿里腾讯裁员、最高30%?计算机行业前景到底如何...
  14. iOS 中的常用设计模式总结
  15. 跟随郭霖学Volley
  16. bne 1b 汇编含义
  17. (二十七)论文阅读 | 目标检测之MAL
  18. 12、说说梯度下降法
  19. 百度登陆协议分析!!!用libcurl来模拟百度登陆
  20. VMware虚拟机NAT模式下连不上网

热门文章

  1. 3.定义一个有10个元素的数组,用其代表10个学生的考试成绩,从键盘输入10个成绩,统计平均成绩。
  2. (找水王)编程思维训练
  3. 在GitHub中创建目录
  4. JDBC 创建连接对象的三种方式 、 properties文件的建立、编辑和信息获取
  5. docker系列之安装配置-2
  6. 线性规划与网络流24题●09方格取数问题13星际转移问题
  7. HTML的语义化,你需要深入了解
  8. Sharepoint client model 中出现Cannot invoke HTTP DAV request. There is a pending query 的解决办法...
  9. 开源通用爬虫框架YayCrawler-运行与调试
  10. Xcode 卸载方法