#yyds干货盘点# LeetCode 热题 HOT 100:单词搜索

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了#yyds干货盘点# LeetCode 热题 HOT 100:单词搜索相关的知识,希望对你有一定的参考价值。

题目:

给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。

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

 

示例 1:

输入:board = [["A","B","C","E"],["S","F","C","S"],["A","D","E","E"]], word = "ABCCED"

输出:true

示例 2:

输入:board = [["A","B","C","E"],["S","F","C","S"],["A","D","E","E"]], word = "SEE"

输出:true

示例 3:

输入:board = [["A","B","C","E"],["S","F","C","S"],["A","D","E","E"]], word = "ABCB"

输出:false

代码实现:

class Solution 
public boolean exist(char[][] board, String word)
int h = board.length, w = board[0].length;
boolean[][] visited = new boolean[h][w];
for (int i = 0; i < h; i++)
for (int j = 0; j < w; j++)
boolean flag = check(board, visited, i, j, word, 0);
if (flag)
return true;



return false;


public boolean check(char[][] board, boolean[][] visited, int i, int j, String s, int k)
if (board[i][j] != s.charAt(k))
return false;
else if (k == s.length() - 1)
return true;

visited[i][j] = true;
int[][] directions = 0, 1, 0, -1, 1, 0, -1, 0;
boolean result = false;
for (int[] dir : directions)
int newi = i + dir[0], newj = j + dir[1];
if (newi >= 0 && newi < board.length && newj >= 0 && newj < board[0].length)
if (!visited[newi][newj])
boolean flag = check(board, visited, newi, newj, s, k + 1);
if (flag)
result = true;
break;




visited[i][j] = false;
return result;


以上是关于#yyds干货盘点# LeetCode 热题 HOT 100:单词搜索的主要内容,如果未能解决你的问题,请参考以下文章

#yyds干货盘点# LeetCode 热题 HOT 100:最长有效括号

#yyds干货盘点# LeetCode 热题 HOT 100:对称二叉树

#yyds干货盘点# LeetCode 热题 HOT 100:旋转图像

#yyds干货盘点# LeetCode 热题 HOT 100:单词搜索

#yyds干货盘点# LeetCode 热题 HOT 100:组合总和

#yyds干货盘点# LeetCode 热题 HOT 100:接雨水