LeetCode ! 79. Word search

news/2024/11/29 19:42:38/

参考资料:左程云算法课
79. Word Search
Given an m x n grid of characters board and a string word, return true if word exists in the grid.

The word can be constructed from letters of sequentially adjacent cells, where adjacent cells are horizontally or vertically neighboring. The same letter cell may not be used more than once.

Example 1:

Input: board =
[[“A”,“B”,“C”,“E”],
[“S”,“F”,“C”,“S”],
[“A”,“D”,“E”,“E”]], word = “ABCCED”
Output: true

思路:主函数中枚举路径的起点board[i][j],从str[0]开始匹配str。只有有一个成功,就返回true.
设计递归函数检查从board[i][j]开始能够配出str[index…]。
注意:为了防止”走重复路“,应该给走过的点做上标记,尝试完四个方向之后记得恢复现场。(深度优先遍历)

“走重复路”的例子
board =
A B
D C
A
str = “ABCDA”
如果不给最左上角的A做上标记,那么等走到D时,有可能再次回到 最左上角的A, 即 “走重复路”,不符合题意。

 public  boolean exist(char[][] board, String s){int n=  board.length;int m = board[0].length;char[] str = s.toCharArray();for(int i=0;i<n;i++){for(int j=0;j<m;j++){if(f(board,i,j,str,0)){return true;}}}return false;// f(i,j,board,str,index) // start from [i][j] to match str[index..]}public boolean f(char[][] board,int i, int j, char[] str, int index){if(str.length==index) // !! 这个判断一定要放在下面这个判断的前面,否则会报错,超出索引上界{return true;}if(i<0||i>=board.length||j<0||j>=board[0].length||board[i][j]!=str[index]){return false;}board[i][j]='.';boolean b1 = f(board,i-1,j,str,index+1);boolean b2 = f(board,i,j-1,str, index+1);boolean b3 = f(board,i,j+1,str, index+1);boolean b4 = f(board,i+1,j,str, index+1);board[i][j] = str[index];return b1||b2||b3||b4;}

http://www.ppmy.cn/news/183495.html

相关文章

中控考勤机通过公网添加入异地中控系统

一&#xff1a;确定异地的考勤机网络能正常出外网 二&#xff1a;通过考勤机&#xff1a;通信设置——网络设置。记录下网络IP地址&#xff1a; 三&#xff1a;通过考勤机&#xff1a;系统信息——设备信息&#xff0c;记录下设备序列号 四&#xff1a;进入中控考勤系统&#x…

numpy 处理txt的简单样例

1、需要处理的txt文件 64.77.40.66 http://blog.billy.com/2013/08/websites-sell-stuff/ http://blog.billy.com 23.91.70.19 http://collegetranscriptsnow.com/act-vs-sat http://collegetranscriptsnow.com 162.249.125.17 http://www.ronpaulcoin.com/hello-world http:/…

《Oracle PL/SQL实例精讲》学习笔记1——数据准备

前言&#xff1a; 古人言&#xff0c;“业精于勤荒于嬉&#xff0c;行成于思毁于随”。对于自己所从事的工作&#xff0c;若使理论知识和实践经验相辅相成&#xff0c;则可使自己的业务能力日益增长&#xff0c;事半功倍。反之&#xff0c;亦然。 前几天&#xff0c;接到一个…

IronPDF 2023.6.10 FOR NET CRACK

适用于.NET的IronPDF 2023.6.10 添加新的注释API并改进图像压缩逻辑。 2023年6月2日-14:42新版 特点 添加了新的连续进给选项。例如用于生成收据文档。 添加了新的注释API&#xff0c;包括注释删除。 添加了删除书签的功能。 将内存使用率和性能提高了10%。 改进了图像…

hbot固件配置

又入了一台打印机&#xff0c;171到手&#xff0c;本来之前有更好的&#xff0c;无奈别人下手太快&#xff0c;只剩这台了。 175x135x180的样子。 创客的板&#xff0c;还带16g的闪迪内存卡&#xff0c;看到那会儿感觉赚大了&#xff01; 拿到的时候不少螺丝松的&#xff0c;有…

SVG文档:使用SVG 编程(转自IBM文档库)

简介&#xff1a; 可缩放矢量图形&#xff08;Scalable Vector Graphics&#xff0c;SVG&#xff09;是一种用于描述与比例无关的图形的 XML 格式&#xff0c;可以很好地支持免费软件和商业工具。在本期文章中&#xff0c;David 将介绍使用 SVG 编写脚本和动画&#xff0c;还将…

Marlin2.0.7的configuration.h中文说明

#pragma once /** * Configuration.h * * Basic settings such as: &#xff08; 基本设置如&#xff1a;&#xff09; * * - Type of electronics &#xff08;电子元器件类型 &#xff09; * - Type of temperature sensor &#xff08;温度传感器类型 &#xff09; …

marlin2.0.x 固件相关配置文档说明

主要目的 了解对应参数的作用&#xff0c;以优化3D打印机的打印效果 具体分析 配置文件有两个 Configuration.h 包含硬件核心、语言和控制器的设置&#xff0c;以及最常见的功能和组件的设置&#xff0c;主要配置的地方。 Configuration_adv.h 提供更详细的自定义选项&…