题目

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

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

示例:

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

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

题解

这个题目拿到题目就应该能想到是用DFS的题目,因为这完完全全就是DFS,没有做任何的变形,关于DFS,这里就不重复讲解。

推荐一个b站上的视频,不熟悉的同学可以回顾一下。

https://www.bilibili.com/vide...

熟悉的同学直接看代码吧

java

class Solution {public boolean exist(char[][] board, String word) {if (word == null || word.length() == 0) {return true;}char[] chs = word.toCharArray();for (int i = 0; i < board.length; i++) {for (int j = 0; j < board[0].length; j++) {if (dfs(board, chs, 0, i, j)) {return true;}}}return false;}private boolean dfs(char[][] board, char[] words, int index, int x, int y) {if (index == words.length) {return true;}if (x < 0 || x == board.length || y < 0 || y == board[0].length) {return false;}if (board[x][y] != words[index]) {return false;}char source = board[x][y];board[x][y] = '\0';boolean exist = dfs(board, words, index + 1, x, y + 1)|| dfs(board, words, index + 1, x, y - 1)|| dfs(board, words, index + 1, x + 1, y)|| dfs(board, words, index + 1, x - 1, y);board[x][y] = source;return exist;}
}

python

class Solution:def dfs(self, board, word, index, x, y):if not board or index == len(word):return Trueif x < 0 or x == len(board) or y < 0 or y == len(board[0]):return Falseif board[x][y] != word[index]:return Falsesource = board[x][y]board[x][y] = '\0'exist = self.dfs(board, word, index + 1, x, y + 1) or self.dfs(board, word, index + 1, x, y - 1) or self.dfs(board, word, index + 1, x + 1, y) or self.dfs(board, word, index + 1, x - 1, y)board[x][y] = sourcereturn existdef exist(self, board, word):""":type board: List[List[str]]:type word: str:rtype: bool"""if len(word) == 0:return Falsefor i in range(len(board)):for j in range(len(board[0])):if self.dfs(board, word, 0, i, j):return Truereturn False

热门阅读

  • MySQL索引背后的数据结构及算法原理
  • 【Leetcode】78. 子集
  • 【Leetcode】77. 组合

【Leetcode】79.单词搜索相关推荐

  1. Leetcode 79. 单词搜索

    Leetcode 79. 单词搜索 1.问题分析 2.问题解决 3.总结 1.问题分析 题目链接:https://leetcode-cn.com/problems/word-search/   本质上 ...

  2. LeetCode 79 单词搜索

    LeetCode 79 单词搜索 题目链接 给定一个二维网格和一个单词,找出该单词是否存在于网格中. 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中"相邻"单元格是那些水 ...

  3. Leetcode 79.单词搜索

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

  4. java实现英文文件单词搜索系统_Java实现 LeetCode 79 单词搜索

    79. 单词搜索 给定一个二维网格和一个单词,找出该单词是否存在于网格中. 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中"相邻"单元格是那些水平相邻或垂直相邻的单元格. ...

  5. LeetCode 79. 单词搜索【c++/java详细题解】

    目录 1.题目 2.思路 3.c++代码 4.java代码 1.题目 给定一个 m x n 二维字符网格 board和一个字符串单词 word .如果 word 存在于网格中,返回 true :否则, ...

  6. LeetCode 79. 单词搜索 | Python

    文章目录 79. 单词搜索 题目 解题思路 代码实现 实现结果 总结 79. 单词搜索 题目来源:https://leetcode-cn.com/problems/word-search 题目 给定一 ...

  7. Java实现 LeetCode 79 单词搜索

    79. 单词搜索 给定一个二维网格和一个单词,找出该单词是否存在于网格中. 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中"相邻"单元格是那些水平相邻或垂直相邻的单元格. ...

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

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

  9. LeetCode - #79 单词搜索(Top 100)

    前言 本题为 LeetCode 前 100 高频题 我们社区陆续会将顾毅(Netflix 增长黑客,<iOS 面试之道>作者,ACE 职业健身教练.)的 Swift 算法题题解整理为文字版 ...

  10. LeetCode 79. 单词搜索(回溯DFS)

    1. 题目 给定一个二维网格和一个单词,找出该单词是否存在于网格中. 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中"相邻"单元格是那些水平相邻或垂直相邻的单元格.同一个 ...

最新文章

  1. Linux---一台主机部署多版本mysql服务和mysql实例
  2. Educational Codeforces Round 103 (Rated for Div. 2)A~E解题报告
  3. 教育部:麻省理工学院2019年本科生未招收一名中国大陆的学生不属实
  4. pr下雪下雨_图像增强:下雨,下雪。 如何修改照片以训练自动驾驶汽车
  5. 3D Vision公开课 | 移动机器人视觉三维感知的现在与将来
  6. 蔚来Q3营收近百亿、毛利率20.3%,预计明年下半年推出2款新车
  7. [转载] 七龙珠第一部——第021话 克林危险
  8. Linux中缺32位运行库steam,Steam游戏必备运行库
  9. ffmpeg安装教程
  10. LINUX串口驱动安装 一条龙服务
  11. 关于双层原子台阶的形成机制
  12. asic面试题目 英伟达_英伟达笔试题目ASIC|英伟达笔试题
  13. 操作系统1-6章作业
  14. win10截图软件工具
  15. java epics_Visual Paradigm敏捷开发教程(7):如何管理Epics
  16. 欢迎各位小伙伴来领取免费的安卓教程
  17. 中兴通讯某产品大规模敏捷转型实践
  18. 无法更改edge浏览器启动页(主页)\新标签页
  19. python实验五答案_Python实验五
  20. 最全超实用的网站SEO优化方案步骤解析

热门文章

  1. svn cleanup失败
  2. 《Linux调优工具oprofile的演示分析》
  3. Android 进阶 Fragment 介绍和使用 (一)
  4. 谈新公司的人才队伍建设
  5. TP5 实现微信支付和支付宝支付
  6. 区分docker stack/service/task
  7. hdu4279 找规律+小想法
  8. 两个整数相加减是否溢出
  9. 【Android 逆向】Android 中常用的 so 动态库 ( 拷贝 /system/lib/ 中的 Android 系统 so 动态库 )
  10. 【计算理论】计算理论总结 ( 上下文无关文法 CFG 转为下推自动机 PDA 示例 1 ) ★★