力扣labuladong——一刷day91

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、力扣208. 实现 Trie (前缀树)
  • 二、力扣648. 单词替换


前言


Trie 树又叫字典树、前缀树、单词查找树,是一种二叉树衍生出来的高级数据结构,主要应用场景是处理字符串前缀相关的操作

一、力扣208. 实现 Trie (前缀树)

class Trie {private int size;private static final int R = 58;private TrieNode root = null;static class TrieNode{String val;TrieNode[] chialdren = new TrieNode[R];}public Trie() {this.size = 0;}public void insert(String word) {this.root = put(root,0,word);}public boolean search(String word) {return get(word,0,root);}public boolean startsWith(String prefix) {return getPrefix(prefix,0,root);}public TrieNode put(TrieNode node,int index,String word){if(node == null){node = new TrieNode();}if(index == word.length()){node.val = word;return node;}char c = word.charAt(index);node.chialdren[c-'A'] = put(node.chialdren[c-'A'],index+1,word);return node;}public boolean get(String word,int index,TrieNode node){if(node == null){return false;}if(index == word.length()){if(node.val != null){return true;}else{return false;}}char c = word.charAt(index);if(get(word,index+1,node.chialdren[c-'A'])){return true;}return false;}public boolean getPrefix(String word,int index,TrieNode node){if(node == null){return false;}if(index == word.length()){return true;}char c = word.charAt(index);if(getPrefix(word,index+1,node.chialdren[c-'A'])){return true;}return false;}
}/*** Your Trie object will be instantiated and called as such:* Trie obj = new Trie();* obj.insert(word);* boolean param_2 = obj.search(word);* boolean param_3 = obj.startsWith(prefix);*/

二、力扣648. 单词替换

class Solution {public String replaceWords(List<String> dictionary, String sentence) {Trie trie = new Trie();for(int i = 0; i < dictionary.size(); i ++){trie.put(dictionary.get(i));}StringBuilder sb = new StringBuilder(sentence);StringBuilder res = new StringBuilder();for(int i = 0, j = 0; j <= sentence.length(); j++) { if(j < sentence.length() && sb.charAt(j) != ' '){continue;} else {String cur = trie.get(sb.substring(i, j));res.append(cur);if (j < sentence.length()) {res.append(" ");}i = j + 1;}}return res.toString();}class Trie{static final int R = 26;TrieNote root = null;static class TrieNote{String val;TrieNote[] children = new TrieNote[R];}String get(String dic){int len = Integer.MAX_VALUE;return getOne(dic, root, 0, len);}String getOne(String dic, TrieNote node, int index, int len){if(node == null || index == dic.length()){return len == Integer.MAX_VALUE ? dic : dic.substring(0,len-1);}if(node.val != null){len = Math.min(len,index+1);}char c = dic.charAt(index);return getOne(dic, node.children[c-'a'],index+1,len);}void put(String dic){this.root = putA(root,0,dic);}TrieNote putA(TrieNote node, int index, String dic){if(node == null){node = new TrieNote();}if(index == dic.length()){node.val = dic;return node;}char c = dic.charAt(index);node.children[c-'a'] = putA(node.children[c-'a'],index+1,dic);return node;}}
}

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

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

相关文章

2024.1.13

今天想开个新坑&#xff0c;于是我就开始学习数据结构了&#xff0c;那玩意怎么说呢&#xff0c;挺抽象的东西&#xff0c;有点难懂&#xff0c;我就一边做笔记一边暂停&#xff0c;就这么硬学&#xff0c;数据结构确实是编程中一个十分重要的东西&#xff0c;必须给他拿下昂。…

#每日一题#力扣#2085.统计出现过一次的公共字符串

给你两个字符串数组 words1 和 words2 &#xff0c;请你返回在两个字符串数组中 都恰好出现一次 的字符串的数目。 示例 1&#xff1a; 输入&#xff1a;words1 [“leetcode”,“is”,“amazing”,“as”,“is”], words2 [“amazing”,“leetcode”,“is”] 输出&#xff1a;…

HCIP-1

一、网络类型&#xff1a; 点到点 BMA&#xff1a;广播型多路访问 – 在一个MA网络中同时存在广播&#xff08;洪泛&#xff09;机制 NBMA&#xff1a;非广播型多路访问—在一个MA网络中&#xff0c;没有洪泛机制 MA&#xff1a;多路访问 在一个网段内&#xff0c;存在的节…

大模型实战营Day4 XTuner 大模型单卡低成本微调实战

本次讲师是一位从事算法工作的优秀贡献者。 一起来看看吧&#xff01; 本次课程内容主要有&#xff1a; 我将在此整理前三节的内容&#xff0c;第四节放在作业章节进行讲解&#xff1a; 同第三节的建立数据库中所提及到的&#xff0c;如果通用大模型在专用领域表现能力不强&…

MySQL操作手册:高效管理、轻松查询!

MySQL操作手册&#xff1a;高效管理、轻松查询&#xff01; 文章目录 MySQL操作手册&#xff1a;高效管理、轻松查询&#xff01;1、常用SQL命令1.1 数据库操作1.2 表操作1.3 数据操作1.4 索引操作1.5 权限管理1.5.1 创建用户1.5.2 授予权限1.5.3 撤销权限1.5.4 刷新权限 2、常…

普通两样本孟德尔随机化仍能发一区! | 孟德尔随机化周报(1.03-1.09)

欢迎报名2024年孟德尔随机化方法高级班课程&#xff01; 郑老师团队开设的孟德尔随机化高级班2024年1月20-21日开课&#xff0c;欢迎报名 孟德尔随机化,Mendilian Randomization&#xff0c;简写为MR&#xff0c;是一种在流行病学领域应用广泛的一种实验设计方法&#xff0c;利…

【C++ 程序设计入门基础】- 第4节-函数

1、函数 函数是对实现某一功能的代码的模块化封装。 函数的定义&#xff1a; 标准函数&#xff1a; 输入 n 对整数的 a、b &#xff0c;输出它们的和。 #include <iostream> #include <windows.h> using namespace std;int add(int a,int b);//函数原型声明int…

分享一个好用的免费在线扣图网址

具体效果 附地址 https://cutout.aiwave.cc/

洛谷 P8443 gcd.

题目描述 T T T 组数据&#xff0c;每一组数据给定 l , r , x l,r,x l,r,x&#xff0c;试求&#xff1a; gcd ⁡ ( ⌊ l x ⌋ , ⌊ l 1 x ⌋ , ⋯ , ⌊ r x ⌋ ) \gcd(\lfloor \frac{l}{x}\rfloor,\lfloor \frac{l1}{x}\rfloor,\cdots,\lfloor \frac{r}{x}\rfloor) gcd(⌊xl​…

dpdk20.11.9 编译arm版本以及在arm 应用中引用dpdk20.11.9

以往19版本的dpdk 都是可以直接用make 的方式进行编译, e.g, make Tx86_64-native-linux-gcc install 为了和客户那边用的DPDK 版本一致, 这次要用dpdk20.11.9, 并且要把之前跑在X86 版本的服务器上的程序跑在ARM 版本上. 目前有两个问题: 1. 编译出arm 版本的dpdk. 2. 把…

程序员副业之AI文库项目(超详细完整全流程)

引言 大家好&#xff0c;我是小黑&#xff0c;今天给大家介绍一个特别简单的项目&#xff0c;用AI辅助咱们来编写各种word&#xff0c;PPT等资料上传到百度文库、原创力、道客巴巴、csdn等平台赚取被动的睡后收益。 但要注意&#xff0c;只是辅助&#xff0c;即便是用AI辅助&…

Flink窗口(2)—— Window API

目录 窗口分配器 时间窗口 计数窗口 全局窗口 窗口函数 增量聚合函数 全窗口函数&#xff08;full window functions&#xff09; 增量聚合和全窗口函数的结合使用 Window API 主要由两部分构成&#xff1a;窗口分配器&#xff08;Window Assigners&#xff09;和窗口函…

【力扣100】20.有效的括号 || 栈

添加链接描述 class Solution:def isValid(self, s: str) -> bool:if len(s)%2!0:return Falsestack[]dic{")":"(","]":"[","}":"{",}for i in s:if i not in dic:stack.append(i)elif not stack or dic[i]!s…

wpf使用Popup封装数据筛选框--粉丝专栏

类似于DevExpress控件的功能 这是DevExpress的winform筛选样式&#xff0c;如下&#xff1a; 这是DevExpress的wpf筛选样式&#xff0c;如下&#xff1a; 这是Excel的筛选样式&#xff0c;如下&#xff1a; 先看效果 本案例使用wpf原生控件封装&#xff0c;功能基本上都满足…

04.neuvector进程策略生成与管控实现

原文链接&#xff0c;欢迎大家关注我的github 一、进程学习管控的实现方式 策略学习实现&#xff1a; 进程的学习与告警主要依据通过netlink socket实时获取进程启动和退出的事件: 1.创建netLink socket&#xff1b; 2.通过创建netlink的fd对进程的事件进行捕获与更新&#x…

标准 C++ 数据类型和 C++/WinRT

借助 C/WinRT&#xff0c;可以使用标准 C 数据类型&#xff08;包括某些 C 标准库数据类型&#xff09;调用 Windows 运行时 API。 可以将标准字符串传递到 API&#xff08;请参阅 C/WinRT 中的字符串处理&#xff09;&#xff0c;还可以将初始值列表和标准容器传递到 API&…

Objective-C索引集NSIndexSet与可变索引集NSMutableIndexSet使用

//创建空arrayNSMutableArray *emptyArray [NSMutableArray array];[emptyArray addObjectsFromArray:[marr subarrayWithRange:NSMakeRange(6, 5)]];[marr removeAllObjects];NSLog("%",emptyArray);//创建索引集NSIndexSet *indexs [NSIndexSet indexSetWithInde…

复试 || 就业day14(2024.01.10)算法篇

文章目录 前言字符串中第二大的数字字符串中不同整数的数目判断句子是否为全字母句长度为三且各字符不同的子字符串检查是否区域内所有整数都被覆盖*重新分配字符使所有字符串都相等可以输入的最大单词数检查是否所有字符出现次数相同差的绝对值为 K 的数对数目至少在两个数组中…

2024.1.12每日一题

LeetCode 2085.统计出现过一次的公共字符串 2085. 统计出现过一次的公共字符串 - 力扣&#xff08;LeetCode&#xff09; 题目描述 给你两个字符串数组 words1 和 words2 &#xff0c;请你返回在两个字符串数组中 都恰好出现一次 的字符串的数目。 示例 1&#xff1a; 输…

什么是数通技术?以太网交换机在数通技术中的精要

什么是数通技术&#xff1f; 数通技术是指数字通信技术&#xff0c;它涵盖了数字信号处理、数据传输、网络通信等领域。通信工程师在数通技术中负责设计、建设和维护数字通信系统&#xff0c;以实现可靠、高效的信息传输。这涉及到数字信号的编解码、调制解调、数据压缩、网络…