#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:单词搜索