当前位置: 首页 > news >正文

单词搜索(DFS)

给定一个 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

提示:

  • m == board.length
  • n = board[i].length
  • 1 <= m, n <= 6
  • 1 <= word.length <= 15
  • board 和 word 仅由大小写英文字母组成

class Solution {int m, n;char[][] board;String word;int[][] dirs = {{1,0},{-1,0},{0,1},{0,-1}};public boolean exist(char[][] board, String word) {this.board = board;this.word = word;m = board.length;n = board[0].length;for (int i = 0; i < m; i++) {for (int j = 0; j < n; j++) {if (dfs(i, j, 0)) return true;}}return false;}boolean dfs(int i, int j, int k) {if (k == word.length()) return true;if (i < 0 || i >= m || j < 0 || j >= n || board[i][j] != word.charAt(k)) return false;char tmp = board[i][j]; // 临时保存当前字符,方便回溯时还原board[i][j] = '#';      // 标记该格子已使用,防止重复访问for (int[] d : dirs) {if (dfs(i + d[0], j + d[1], k + 1)) {board[i][j] = tmp; // 如果某个方向能匹配成功,恢复原字符并返回 truereturn true;}}board[i][j] = tmp; // 四个方向都不行,恢复当前格子并返回 falsereturn false;}
}

http://www.dtcms.com/a/453866.html

相关文章:

  • 绵阳房产网站建设网站建设 创业
  • static-bind 概念及题目
  • 中卫企业管理培训网站wordpress离线更新
  • [Linux系统编程——Lesson3.进程概念 ]
  • SOLIDWORKS VBA 自学笔记018、复制字符串到剪贴板(代码示例)
  • CSP-J 2024 复赛题
  • 【算法训练营 · 汇总篇】数组、链表、哈希表、字符串、栈与队列
  • 网站备案万网如何推广一个新的app
  • 移动应用开发网站wordpress返回500
  • 茶叶公司网站源码辽阳建设网站
  • 网站下载免费的视频软件在百度上做广告推广要多少钱
  • gitee设置不公开邮箱地址,推送报错解决方案
  • 网站不备案怎么回事龙华新区网站建设
  • CoroutineScope(SupervisorJob() + Dispatchers.IO) 详解
  • 开篇词:为什么要学习系统分析师?核心考点有哪些?
  • 制作网页与网站微信小程序开发需要什么技术
  • 建设官网的网站网站修改用什么工具
  • 参数校验:jakarta.validation
  • 网站策划厂表白网站源码大全
  • 数据结构(陈越,何钦铭)期中考试
  • 网站发展历程360浏览器主页
  • 建设网站平台的章程建设银行明细网站能查多久
  • 算术操作符 逆向汇编二
  • 《Vuejs设计与实现》第 5 章(非原始值响应式方案)下 Set 和 Map 的响应式代理
  • javascript基础入门菜鸟,javascript基础入门教程
  • 网站没有index.html深圳网站建设创想营销
  • 小米网站开发语言系统开发过程中的第一个文档
  • 分布式专题——35 Netty的使用和常用组件辨析
  • Java Caffeine 高性能缓存库详解与使用案例
  • 如何用凡科做自己的网站网站建设中的色彩搭配