news 2026/7/28 15:44:58

Java学习手册:(数据结构与算法-数组)Word Search(leetcode79)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Java学习手册:(数据结构与算法-数组)Word Search(leetcode79)

题目:

给定一个二维平面的字母和一个单词,看是否可以在这个二维平面上找到该单词。其中找到这个单词的规则是,从一个字母出发,可以横向或者纵向连接二维平面上的其他字母。同一个位置的字母只能使用一次。

输入:

(1)二维数组:{ {'A','B','C','E'}, {'S','F','C','S'}, {'A','D','E','E'}}

(2)输入/输出

“ABCCED”→true

“SEE”→true

“ABCB”→false

思路:

递归

代码如下:

package com.haobi; public class WordSearch { private static int m, n; private static int d[][] = {{-1,0},{0,1},{1,0},{0,-1}}; private static boolean visited[][]; private static boolean inArea(int x, int y) { return x>=0 && x<m && y>=0 && y<n; } public static void main(String[] args) { char[][] arr = { {'A','B','C','E'}, {'S','F','C','S'}, {'A','D','E','E'}}; String s1 = "ABCCED"; String s2 = "SEE"; String s3 = "ABCB"; System.out.println(exist(arr, s1)); System.out.println(exist(arr, s2)); System.out.println(exist(arr, s3)); } /** * 递归函数 * 从board[startx][starty]开始,寻找word[index...word.size()] * @param board * @param word * @param index * @param startx * @param starty * @return */ private static boolean searchWord(char[][] board, String word, int index, int startx, int starty) { //判断字符串中最后一个元素是否在二维数组中 if(index == word.length()-1) { return board[startx][starty] == word.charAt(index); } if(board[startx][starty] == word.charAt(index)) { visited[startx][starty] = true; //从startx,starty出发,向四个方向寻找 for(int i=0;i<4;i++) { int newx = startx + d[i][0]; int newy = starty + d[i][1]; if(inArea(newx, newy) && !visited[newx][newy] && searchWord(board, word, index+1, newx, newy)) { return true; } } visited[startx][starty] = false; } return false; } public static boolean exist(char[][] board, String word) { m = board.length; n = board[0].length; visited = new boolean [m][n]; for(int i=0;i<m;i++) { for(int j=0;j<n;j++) { if(searchWord(board, word, 0, i, j)) { return true; } } } return false; } }

程序输出结果如下:

true
true
false

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/28 15:44:38

ButterKnife到ViewBinding的迁移指南与最佳实践

1. ButterKnife的辉煌与困境&#xff1a;一个时代的终结ButterKnife曾经是Android开发者的必备神器。2013年Jake Wharton发布这个库时&#xff0c;它用注解处理器的方式彻底改变了View绑定的写法。还记得当年第一次用ButterKnife替换findViewById时的惊艳吗&#xff1f;一行注解…

作者头像 李华
网站建设 2026/7/28 15:42:05

springMvc中前端获取后台数据的方式

最新项目中需要用到不跳转获取后台数据&#xff08;List对象集合&#xff09;&#xff0c;百度操作一波&#xff0c;发现CSDN的帖子真水&#xff0c;根本没有一遍讲的比较全面的&#xff0c;而且帖子大多数是错的&#xff08;可能作者执行成功了&#xff0c;但是那只是你刚好条…

作者头像 李华
网站建设 2026/7/28 15:41:50

立足广州深耕广告行业,传播易是如何一步步拿下多项大奖的?

近日&#xff0c;广州传播易智能科技有限公司荣获广州市广告行业协会、全媒体委员会联合授予的2018 年度广州市广告行业全媒体新锐企业称号。该奖项经由行业资质核验、业务实力评审、市场口碑调研多层严苛筛选颁发&#xff0c;是广州官方广告权威机构对传播易初创阶段模式创新、…

作者头像 李华
网站建设 2026/7/28 15:40:00

无需代码本地 AI 自动化,OpenClaw 完整搭建与办公指令示例

&#x1f99e;教程适配&#xff1a;OpenClaw v2.7.9 | 适配 Windows10/11、macOS 双系统 核心亮点&#xff1a;提供全程可视化图形操作界面&#xff0c;自动补齐全套运行依赖&#xff0c;数据独立存储于本地设备&#xff0c;兼容多款主流大模型&#xff0c;并采用轻量化的 45.7…

作者头像 李华
网站建设 2026/7/28 15:39:49

超低功耗电池监测与智能电源管理方案

1. 不可充电初级电池的寿命挑战与解决方案在物联网设备和便携式电子设备中&#xff0c;不可充电的初级电池&#xff08;如碱性电池、锂亚硫酰氯电池&#xff09;仍然是主流电源选择。这类电池虽然成本低廉、使用简单&#xff0c;但存在一个致命弱点&#xff1a;一旦电量耗尽就必…

作者头像 李华
网站建设 2026/7/28 15:39:08

计算机毕业设计之基于SpringBoot的二手车在线售卖系统的设计与实现

当前&#xff0c;由于人们生活水平的提高和思想观念的改变&#xff0c;然后随着经济全球化的背景之下&#xff0c;互联网技术将进一步提高社会综合发展的效率和速度&#xff0c;互联网技术也会涉及到各个领域&#xff0c;于是传统的管理方式对时间、地点的限制太多&#xff0c;…

作者头像 李华