与208.前缀树的设计是一样的,关键点在于word中存在通配符“.",所以针对该特殊情况,在search时针对这里进行全子节点的深度搜索

class WordDictionary {TrieNode root;private class TrieNode {char val;// 当前节点的值,冗余了,可不写Map<Character, TrieNode> children;// 当前节点的孩子boolean isEnd;// 标记是否是叶节点,默认为falsepublic TrieNode() {children = new HashMap<>();}}public WordDictionary() {root = new TrieNode();}public void addWord(String word) {TrieNode cur = root;for (int i = 0; i < word.length(); i++) {//不存在该字符则在子节点中创建if (!cur.children.containsKey(word.charAt(i))) {cur.children.put(word.charAt(i), new TrieNode());}//指针向子节点偏移cur = cur.children.get(word.charAt(i));}cur.isEnd = true;//创建到最后一个字符时就是叶节点,置为true}public boolean search(String word) {return search(word, root);}private boolean search(String word, TrieNode root) {TrieNode cur = root;for (int i = 0; i < word.length(); i++) {//1.如果word中当前位置是.那么需要遍历当前节点之后的每条路径if (word.charAt(i) == '.') {Set<Character> children = cur.children.keySet();for (Character child : children) {if (search(word.substring(i + 1), cur.children.get(child))) {return true;}}return false;}//2.如果word中当前位置字符并不存在直接返回falseif (!cur.children.containsKey(word.charAt(i))) {return false;}//3.如果word中当前位置字符匹配,指针向子节点偏移cur = cur.children.get(word.charAt(i));}return cur.isEnd;}
}/*** Your WordDictionary object will be instantiated and called as such:* WordDictionary obj = new WordDictionary();* obj.addWord(word);* boolean param_2 = obj.search(word);*/

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

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

相关文章

项目中的一些比较实用的自定义控件

本文是记录项目开发中一些相对复杂但都比较实用的控件&#xff0c;这些控件都是基于自定义的方式去实现&#xff0c;如果有需要的朋友&#xff0c;这个可以作为一个参考&#xff0c;同时也做一个自我总结。 &#xff08;1&#xff09;子项大小不一致的RecyclerView&#xff08;…

[iOS] 折叠 cell

目录 前言 1.原理 2.折叠 cell 的点击选中 3.折叠 cell 高度的变化 4.实现效果 5.总结 前言 折叠 cell 是在 3GShare 中写过的一个小控件&#xff0c;这篇博客是一个小小的总结。 1.原理 在这里的核心就是我们可以通过改变按钮的 tag 值来判断我们是否应该展开还是回收…

MySQL的组复制(MGR)高可用集群搭建

一、MySQL 组复制&#xff08;MGR&#xff09;核心概念 MySQL Group Replication&#xff08;简称 MGR&#xff09;是 MySQL 官方推出的 高可用&#xff08;HA&#xff09; 强一致性 解决方案&#xff0c;基于改进的 Paxos 协议实现&#xff0c;核心能力可概括为 3 点&#xf…

使用Shell脚本实现Linux系统资源监控邮件告警

前言 1. 问题背景与需求 2. Bash 脚本监控资源 3. Bash 脚本判断阈值 4. 配置 msmtp 发送邮件 4.1 安装 msmtp 4.2 创建配置文件 /etc/msmtprc 5. 发送邮件 5.1 给别人发邮件 6. 完整示例脚本 7. 测试方法 8. 常见问题解答 9. 总结 前言 在运维过程中&#xff0c…

设计整体 的 序分(三“释”)、正宗分(双“门”)和流通分(统一的通行表达式) 之3 “自明性”(腾讯元宝 之2)

Q&AQ11、可能还需要补充 魂轴、体轴 和 中心轴 并行 上升 的内容Q11.1、我刚才说“可能还需要补充 魂轴、体轴 和 中心轴 并行 上升 的内容” 是指的 我们今天前面讨论 得出的整体设计 的一个概念整体 的一个双螺旋上升结构中的三个轴。 您刚才是这样 理解的吗&#xff1f;…

使用Ansible自动化部署Hadoop集群(含源码)--环境准备

现在我们有5台虚拟机&#xff0c;已经配置好了主机名和网络我们的目标是通过Ansible实现自动化部署hadoop集群。在此之前&#xff0c;我们先编写一个shell脚本来配置hadoop集群的环境&#xff0c;包括安装软件、安装配置Ansible&#xff08;一个主节点四个工作节点&#xff09;…

C#海康车牌识别实战指南带源码

C#海康车牌识别实战指南带源码前言车牌识别技术在智能交通、停车场管理等领域有着广泛的应用。海康威视作为国内领先的安防厂商&#xff0c;其车牌识别相机提供了丰富的SDK接口供开发者使用。本文将详细介绍如何使用C#语言结合海康威视SDK实现车牌识别功能&#xff0c;并解析关…

智慧能源新范式:数字孪生平台如何驱动风电场的精细化管理?

摘要你有没有想过&#xff0c;一座风力发电场背后&#xff0c;藏着一个“看不见的孪生兄弟”&#xff1f;它能提前预知风机故障&#xff0c;实时模拟极端天气的影响&#xff0c;甚至能“训练”运维人员在虚拟场景中演练抢修。这就是数字孪生——一个让风电场从“靠经验管理”转…

STM32-FreeRTOS操作系统-任务管理

引言 随着嵌入式技术的飞速发展&#xff0c;STM32与FreeRTOS的融合愈发紧密。本文聚焦于STM32平台下FreeRTOS操作系统的任务管理&#xff0c;旨在为开发者提供清晰的思路与实用的技巧&#xff0c;助力高效开发。 为什么要进行任务管理&#xff1f; 在嵌入式系统中&#xff0c;…

工业领域 ACP 协议全解析:从入门到实战案例

工业领域 ACP 协议全解析&#xff1a;从入门到实战案例 文章目录工业领域 ACP 协议全解析&#xff1a;从入门到实战案例一、前言二、ACP 协议是什么&#xff1f;1. 基本定义2. 与数据传输协议的区别三、ACP 协议的核心功能1. 身份认证&#xff08;Authentication&#xff09;2.…

计算机组成原理:计算机硬件的基本组成

&#x1f4cc;目录&#x1f5a5;️ 计算机硬件的基本组成&#xff1a;从经典到现代的架构演进&#x1f9e9; 一、计算机硬件的五大部分&#xff1a;功能与协同&#x1f4e5; &#xff08;一&#xff09;输入设备&#xff1a;人机交互的“入口”&#x1f4e4; &#xff08;二&am…

AI歌手功能终于上线!Suno AI 带你保存歌曲的灵魂

当我们谈论一首歌时&#xff0c;究竟是什么让它“独一无二”&#xff1f;是主唱的声音质感&#xff1f;是旋律里的氛围&#xff1f;还是那种无法复制的风格气息&#xff1f; 如今&#xff0c;Suno AI 给出了答案—— AI歌手功能正式上线&#xff01; &#x1f31f;什么是「AI…

Dubbo3.3 Triple协议处理东西向流量

前言 Apache Dubbo 3.3 对 Triple 协议做了升级&#xff0c;现在 Dubbo 不仅可以处理东西向流量&#xff0c;也可以处理南北向流量。 **东西向流量&#xff08;East-West Traffic&#xff09; ** 指数据中心或网络内部同级设备/服务之间的通信。例如&#xff0c;微服务之间的…

操作系统核心特点详解:从并发到分布式,一文搞懂考研必备知识

操作系统核心特点详解&#xff1a;从并发到分布式&#xff0c;一文搞懂考研必备知识 大家好&#xff0c;今天咱们来聊聊操作系统&#xff08;OS&#xff09;这个计算机世界的“大管家”。想象一下&#xff0c;你的电脑就像一个忙碌的厨房&#xff0c;操作系统就是那个厨师长&am…

2025精选5款AI视频转文字工具,高效转录秒变文字!

视频转文本的需求早已渗透到生活的方方面面&#xff1a;网课学习需要提取课件台词、会议记录想快速整理要点、追剧时急需生肉转字幕…… 手动记录不仅费时&#xff0c;还容易遗漏关键信息。今天就分享5款实用工具&#xff0c;从免费到专业全覆盖&#xff0c;几步操作就能让视频…

MyBatis Example模式SQL注入风险

在使用MyBatis逆向工程生成的Example查询模式时&#xff0c;很多开发者看到XML中存在${}占位符就会担心SQL注入问题。但实际上&#xff0c;存在${}并不等同于存在SQL注入风险。本文将详细分析何时会存在真正的注入风险。 存在SQL注入的两个关键前提 前提一&#xff1a;Criteria…

宝塔PostgreSQL安装pgvecto插件contrib包实现向量存储

1. 宝塔安装 首先确保你的宝塔已经安装了 PostgreSQL。 安装好后是能看到上面这个界面的。 我安装的是 16.1 版本&#xff0c;下面的教程讲的也是 16.1 版本的。 2.开放防火墙的端口号 5432 3.允许外部访问所有数据库 4.设置超级管理员用户密码 用户名默认为&#xff1a;po…

麒麟系统 doc转pdf

# 安装LibreOffice&#xff08;如果尚未安装&#xff09; sudo apt update sudo apt install libreoffice# 将DOC转换为PDF libreoffice --headless --convert-to pdf 你的文档.doc# 或者指定输出目录 libreoffice --headless --convert-to pdf --outdir /输出目录 你的文档.do…

Python实现生成矩形框、三角形框、六边形框和圆环点云

本节我们分享上节提到的不填充点云。在点云处理、计算机视觉与工业检测中&#xff0c;几何轮廓&#xff08;边框/环&#xff09;点云比实心点云更能反映物体的边缘特征、结构骨架与形貌突变区域。Python 借助 NumPy 即可快速生成矩形边框、三角形边框、六边形边框与圆环点云&am…

2025年本体论:公理与规则的挑战与趋势

摘要本文章旨在深入探讨本体论&#xff08;Ontology&#xff09;中公理&#xff08;Axioms&#xff09;与规则&#xff08;Rules&#xff09;的核心概念、技术实现、验证方法、性能评估及其在2025年的前沿趋势与挑战。公理与规则是构建严谨、一致知识模型的逻辑基石&#xff0c…