单词搜索

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

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

示例:

board =
[['A','B','C','E'],['S','F','C','S'],['A','D','E','E']
]给定 word = "ABCCED", 返回 true.
给定 word = "SEE", 返回 true.
给定 word = "ABCB", 返回 false.

分析

和前面 “岛屿的个数” 代码基本一致,对每一个匹配的字符,判断四周是否匹配,如有匹配的就再向四周扩散。

代码

    class Solution {//遍历回溯,采取一个特殊处理:如果匹配到相同字符,则将该字符先置为'0',回溯时恢复原字符,以免重复使用public boolean exist(char[][] board, String word) {if(board.length==0){return false;}for(int i=0;i<board.length;i++){for(int j=0;j<board[0].length;j++){if(dfs(board,word,i,j,0)){return true;}}}return false;}private boolean dfs(char[][] board,String word,int i,int j,int index){if(index>=word.length()){return true;}if(i<0 || i>=board.length ||j<0||j>=board[0].length){return false;}if(board[i][j] != word.charAt(index)){return false;}char temp = board[i][j];board[i][j]='0';boolean res = dfs(board,word,i-1,j,index+1) || dfs(board,word,i+1,j,index+1)||dfs(board,word,i,j-1,index+1)||dfs(board,word,i,j+1,index+1);board[i][j]=temp;return res;}}

LeetCode 中级 - 单词搜索相关推荐

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

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

  2. Leetcode 79.单词搜索

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

  3. LeetCode之单词搜索(回溯法求解)

    题目 给定一个 m x n 二维字符网格 board 和一个字符串单词 word .如果 word 存在于网格中,返回 true :否则,返回 false . 单词必须按照字母顺序,通过相邻的单元格内 ...

  4. Leetcode 79. 单词搜索

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

  5. LeetCode 79 单词搜索

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

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

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

  7. leetcode: 212. 单词搜索II

    212. 单词搜索II 来源:力扣(LeetCode) 链接: https://leetcode.cn/problems/word-search-ii 给定一个 m x n 二维字符网格 board和 ...

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

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

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

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

最新文章

  1. bitcoin转账api,python3.7
  2. 获取网页源代码的最简单办法
  3. Angular Component 开发时属性和运行时属性的对照
  4. xml格式是什么示例_什么是对抗示例?
  5. 微软最新GDI漏洞MS08-052安全解决方案
  6. 信息学奥赛一本通C++语言——1088:分离整数的各个数
  7. java必会的英语单词
  8. 设计灵感案例|教你图像在海报中可以如何摆放!
  9. python 从小白到大牛这本书好嘛_《Python从小白到大牛》又一本零基础入门书
  10. matlab如何仿真递推型dft算法,并联型有源滤波器的设计与仿真
  11. 男人,得有足够征服女人的本钱
  12. 2022江苏省安全员A证考题及答案
  13. 高级OS(十五) - 中断机制以及中断上下部运行和内核代码分析
  14. Android模拟器黑屏
  15. gitee 链接报错
  16. 【突变检验方法二】MATLAB实现贝叶斯突变检测
  17. java星际密码问题
  18. java调用python 踩的坑
  19. PyPy 为什么会比 CPython 还要快?
  20. ctf pwn 萌新学习记录 基本rop(题目来自Wiki)

热门文章

  1. 文章:LIME:Why Should I Trust You?
  2. 主流浏览器汇总(火狐,OPera,safari,谷歌等)
  3. 如何判断两条线段相交(python实现)
  4. Android 启动优化总结
  5. 地质灾害防治工作的经验和体会
  6. mysql 基础入门及单表查询
  7. 【论文】VQA:Learning Conditioned Graph Structures for Interpretable Visual Question Answering
  8. host文件修改与刷新
  9. CSS background-position属性
  10. 函数参数的传递方式和变量作用域