Java | Leetcode Java题解之第212题单词搜索II

题目:

题解:

class Solution {int[][] dirs = {{1, 0}, {-1, 0}, {0, 1}, {0, -1}};public List<String> findWords(char[][] board, String[] words) {Trie trie = new Trie();for (String word : words) {trie.insert(word);}Set<String> ans = new HashSet<String>();for (int i = 0; i < board.length; ++i) {for (int j = 0; j < board[0].length; ++j) {dfs(board, trie, i, j, ans);}}return new ArrayList<String>(ans);}public void dfs(char[][] board, Trie now, int i1, int j1, Set<String> ans) {if (!now.children.containsKey(board[i1][j1])) {return;}char ch = board[i1][j1];Trie nxt = now.children.get(ch);if (!"".equals(nxt.word)) {ans.add(nxt.word);nxt.word = "";}if (!nxt.children.isEmpty()) {board[i1][j1] = '#';for (int[] dir : dirs) {int i2 = i1 + dir[0], j2 = j1 + dir[1];if (i2 >= 0 && i2 < board.length && j2 >= 0 && j2 < board[0].length) {dfs(board, nxt, i2, j2, ans);}}board[i1][j1] = ch;}if (nxt.children.isEmpty()) {now.children.remove(ch);}}
}class Trie {String word;Map<Character, Trie> children;boolean isWord;public Trie() {this.word = "";this.children = new HashMap<Character, Trie>();}public void insert(String word) {Trie cur = this;for (int i = 0; i < word.length(); ++i) {char c = word.charAt(i);if (!cur.children.containsKey(c)) {cur.children.put(c, new Trie());}cur = cur.children.get(c);}cur.word = word;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/40735.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VitePress美化

参考资料&#xff1a; https://blog.csdn.net/weixin_44803753/article/details/130903396 https://blog.csdn.net/qq_30678861/category_12467776.html 站点信息修改 首页部分的修改基本都在.vitepress/config.mts,这个文件内修改。 title 站点名称 description 描述 top…

运维团队指南:完善监控指标与优化报警机制

随着业务规模的不断扩大和系统复杂度的日益增加&#xff0c;运维团队面临着前所未有的挑战。为了保障系统的稳定性和高效运行&#xff0c;完善监控指标与优化报警机制成为了运维工作中的重中之重。本文将结合运维行业动态&#xff0c;就如何完善监控指标体系、优化报警机制等方…

RedHat运维-Linux SSH基础3-sshd守护进程

1. sshd这个守护进程提供了OpenSSH服务&#xff0c;请问可以通过编辑哪些配置文件&#xff0c;来配置这个服务呢&#xff1f;________________________ 2. sshd这个守护进程提供了OpenSSH服务&#xff0c;请问可以通过编辑哪些配置文件&#xff0c;来配置这个服务呢&#xff1f…

Java springboot校园管理系统源码

Java springboot校园管理系统源码-014 下载地址&#xff1a;https://download.csdn.net/download/xiaohua1992/89364089 技术栈 运行环境&#xff1a;jdk8 tomcat9 mysql5.7 windows10 服务端技术&#xff1a;Spring Boot Mybatis VUE 使用说明 1.使用Navicati或者其它工…

怎么样调整分类的阈值

调整分类模型的阈值是改变模型对正负类的预测标准的一种方法&#xff0c;常用于提高精确率、召回率或者其他性能指标。以下是如何调整分类阈值的步骤和方法&#xff1a; PS&#xff1a;阈值是针对预测概率&#xff08;表示样本属于某个特定类别的可能性&#xff09;来说的 调…

Midjourney 如何使用参考图像来提升图像的准确性和相似度?

🧙🏼图像提示 🧙🏼‍♂️ 您可以使用图像作为提示的一部分来影响作业的构图、样式和颜色。图像提示可以单独使用,也可以与文本提示一起使用 - 尝试组合具有不同样式的图像以获得最令人兴奋的结果。 🛠️实际图像提示操作步骤 点击加号按钮,双击上传文件,把小黄猫…

超级好用的java http请求工具

kong-http 基于okhttp封装的轻量级http客户端 使用方式 Maven <dependency><groupId>io.github.kongweiguang</groupId><artifactId>kong-http</artifactId><version>0.1</version> </dependency>Gradle implementation …

ePTFE膜(膨体聚四氟乙烯膜)应用前景广阔 本土企业技术水平不断提升

ePTFE膜&#xff08;膨体聚四氟乙烯膜&#xff09;应用前景广阔 本土企业技术水平不断提升 ePTFE膜全称为膨体聚四氟乙烯膜&#xff0c;指以膨体聚四氟乙烯&#xff08;ePTFE&#xff09;为原材料制成的薄膜。ePTFE膜具有耐化学腐蚀、防水透气性好、耐候性佳、耐磨、抗撕裂等优…

自然语言处理(NLP)—— 期末复习总

1. 结构主义方法The structural Approach 1.1 语素学Graphemics/音素学phonemics 音素phonemes、书面符号written signs、字符character。这一部分关注语言的最小声音单位&#xff08;音素phonemes&#xff09;以及这些声音如何通过书面符号written signs或字符character来表示…

如何做到高级Kotlin强化实战?(二)

高级Kotlin强化实战&#xff08;二&#xff09; 2.Kotlin 与 Java 比较 2.Kotlin 与 Java 比较 2.5 字符串拼接 //Java String firstName "Android"; String lastName "enginner"; String message "My name is: " firstName " "…

Web美食分享平台的系统-计算机毕业设计源码45429

基于Web美食分享平台的系统设计与实现 摘 要 本研究基于Spring Boot框架&#xff0c;设计并实现了一个Web美食分享平台&#xff0c;旨在为用户提供一个交流分享美食体验的社区平台。该平台涵盖了用户注册登录、美食制作方法分享发布、点赞评论互动等功能模块&#xff0c;致力于…

3D Web轻量化平台HOOPS Web Platform的功能与应用分析

随着3D技术在多个行业的广泛应用&#xff0c;对于3D模型轻量化的需求日益增长。HOOPS Web Platform作为一个先进的3D模型轻量化平台&#xff0c;为开发人员提供了一整套工具来构建和部署基于Web的工程应用程序。本文将分析HOOPS Web Platform的核心功能和它在不同领域的应用情况…

软件工程学面向对象

一、面向对象方法学概述 传统的生命周期方法学在消除软件非结构化、促进软件开发工程化方面起了积极的作用&#xff0c;但仍有许多不足&#xff0c;存在的主要问题有&#xff1a;①生产率提高的幅度不能满足需要&#xff1b; ②软件重用程度很低&#xff1b; ③软件很难维护&a…

MySQL中的MVCC解析

MySQL中的MVCC解析 多版本并发控制是MySQL中实现高并发的一种关键技术。通过对数据进行多版本的管理&#xff0c;MVCC能够在保证数据一致性的同时&#xff0c;提高数据库的并发性能。本文将深入探讨MySQL中的MVCC机制&#xff0c;包括其原理、实现方式以及优势。 MVCC的原理 …

华为机试HJ22汽水瓶

华为机试HJ22汽水瓶 题目&#xff1a; 某商店规定&#xff1a;三个空汽水瓶可以换一瓶汽水&#xff0c;允许向老板借空汽水瓶&#xff08;但是必须要归还&#xff09;。 小张手上有n个空汽水瓶&#xff0c;她想知道自己最多可以喝到多少瓶汽水。 想法&#xff1a; 因为可以…

硬件开发工具Arduino IDE

招聘信息共享社群 关联上篇文章乐鑫ESPRESSIF芯片开发简介 Arduino IDE&#xff08;集成开发环境&#xff09;是为Arduino硬件开发而设计的一款软件&#xff0c;它提供了一个易于使用的图形界面&#xff0c;允许用户编写、编辑、编译和上传代码到Arduino开发板。Arduino IDE的…

深入分析 Android BroadcastReceiver (八)

文章目录 深入分析 Android BroadcastReceiver (八)1. 系统与自定义实现1.1 系统广播机制1.1.1 系统广播的实现原理1.1.2 系统广播的源码分析 1.2 自定义广播机制1.2.1 自定义广播的实现步骤1.2.2 自定义广播的源码分析 2. 广播机制设计的初衷与优势2.1 设计初衷2.2 优势 3. 总…

有了提示词框架的鸡,你就能让AI下提示词的蛋~

我们在问AI问题的时候&#xff0c;是不是经常感觉AI的回答没有别人的那么好&#xff1f; 难道别人的AI更加聪明&#xff1f; 很可能是因为我们的提示词没写好&#xff0c;那么&#xff0c;写出好的提示词很难吗&#xff1f; 一点都不难&#xff0c;其实这都是有套路的&#…

Hive排序字段解析

Hive排序字段解析 在Hive中&#xff0c;CLUSTER BY、DISTRIBUTE BY、SORT BY和ORDER BY是用于数据分发和排序的关键子句&#xff0c;它们各自有不同的用途和性能特点。让我们逐一解析这些子句&#xff1a; 1. DISTRIBUTE BY 用途: 主要用于控制如何将数据分发到Reducer。它可…

NSSCTF-Web题目24(RCE-空格绕过、过滤绕过)

目录 [MoeCTF 2021]babyRCE 1、题目 2、知识点 3、思路 [SWPUCTF 2022 新生赛]funny_web 4、题目 5、知识点 6、思路 [MoeCTF 2021]babyRCE 1、题目 2、知识点 空格绕过、过滤绕过 3、思路 出现源码&#xff0c;进行代码审计 需要我们GET方式上传一个rce变量&#x…