算法板子:Trie树——存储字符串、查找字符串的出现次数

在这里插入图片描述

#include <iostream>
using namespace std;const int N = 1e6 + 10;// Trie树是一个集合,可以存储字符串
// son二维数组中,每行代表一个节点,该行的每列都是它的儿子,最多26列代表一个节点最多26个儿子(题目中说了都是小写字母)
// cnt[i]代表以序号为i的节点结尾的字符串有多少个
// idx代表当前可用序号
int son[N][26], cnt[N], idx;// 构造Trie树
void insert(string s)
{// p代表当前节点的序号; 根节点序号为0,初始时p是根节点int p = 0; for (int i = 0; i < s.size(); i ++ ){// 将字符串中的26种小写字母映射到0~25int u = s[i] - 'a';// 如果p节点中的所有子节点没有该字符,给该字符一个序号,相当于创建了新节点if (!son[p][u]) son[p][u] = ++ idx;// 让p指向这个新节点p = son[p][u];}// 字符串在树中插入结束后,最后一个元素作为叶子节点,标记以该节点结尾的字符串的个数多一个cnt[p] ++ ;
}// 查询集合中某个字符串的个数
int query(string s)
{// 根节点序号为0,从根节点开始查int p = 0;for (int i = 0; i < s.size(); i ++ ){// 当前字符映射到0~25int u = s[i] - 'a';// 如果p节点中的所有子节点没有该字符,说明该字符串在树中不存在,个数为0if (!son[p][u]) return 0;// 如果当前字符存在,p指向当前字符的节点p = son[p][u];}// cnt[p]代表以p序号节点结尾的字符串的个数return cnt[p];
}int main()
{int n;cin >> n;while (n -- ){char op;string x;cin >> op >> x;if (op == 'I'){insert(x);}else if (op == 'Q'){cout << query(x) << endl;}}return 0;
}

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

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

相关文章

photoshop学习笔记——选区3

从窗口面板可以打开历史记录面板&#xff0c;历史记录面板保存了所有的操作 可以点击历史记录中某一条&#xff0c;回到当时的操作状态&#xff0c;也可以通过编辑中的 还原、重做、切换到最终状态逐步调整或直接跳到最终状态 回退之后&#xff0c;如果有新的操作&#xff0c;历…

WordPress文章标题定制化前缀插件

引言 在当今互联网的海洋中&#xff0c;吸引读者眼球的第一步往往始于文章标题的设计。对于WordPress博主而言&#xff0c;如何让每篇文章的标题更加个性化和吸引人&#xff0c;成为了一项重要的任务。传统的自定义CSS方法虽然可行&#xff0c;但其繁琐的操作和有限的美学效果…

【高校科研前沿】浙江农林大学童再康教授等人在农林科学顶刊《CATENA》发文:长期覆盖作物可促进多养分循环和地下土壤碳封存

文章简介 论文名称&#xff1a;Long-term cover crops boost multi-nutrient cycling and subsurface soil carbon sequestration by alleviating microbial carbon limitation in a subtropical forest&#xff08;长期覆盖作物通过缓解亚热带森林中微生物的碳限制&#xff0c…

常见的jmeter面试题及答案

1、解释什么是JMeter? JMeter是一款Java开源工具&#xff0c; 用于性能负载测试。它旨在分析和衡量Web应用程序和各种服务的性能和负载功能行为。 2、说明JMeter的工作原理? JMeter就像一群将请求发送到目标服务器的用户-样。它收集来自目标服务器的响应以及其他统计数据&…

enumerate(map(ord, s))

enumerate 是一个内置函数&#xff0c;接受一个可迭代对象并返回一个枚举对象。该枚举对象是一个迭代器&#xff0c;它产生一系列的元组&#xff0c;每个元组包含一个索引&#xff08;从0开始&#xff09;和可迭代对象中的对应元素。 因此&#xff0c;enumerate(map(ord, s)) 会…

软设之数据库逻辑结构设计

数据模型的介绍: 层次模型&#xff0c;网状模型&#xff0c;关系模型&#xff0c;面向对象模型 数据模型的三要素&#xff1a;数据结构&#xff0c;数据操作&#xff0c;数据的约束条件 关系的3种类型&#xff1a; 基本关系&#xff08;称为基本表或基表&#xff09;&#…

每日OJ_牛客_HJ91 走方格的方案数

目录 牛客HJ91 走方格的方案数 解析代码 牛客HJ91 走方格的方案数 走方格的方案数_牛客题霸_牛客网 解析代码 本题为求取路径总数的题目&#xff0c;一般可以通过递归求解&#xff0c;对于复杂的问题&#xff0c;可以通过动态规划求解。此题比较简单&#xff0c;也可以通过递…

Vue2和Vue3实战代码中的小差异(实时更新)

目录 前言1. 未使用自闭合标签2. 事件名连字符3. 换行符4. 弃用.sync 前言 以下文章实时更新&#xff0c;主打记录差异 1. 未使用自闭合标签 104:7 error Require self-closing on Vue.js custom components (<el-table-column>) vue/html-self-closing✖ 1 problem…

百日筑基第三十三天-JAVA 如何实现链式调用

在 Java 中实现链式调用通常涉及返回当前对象的引用以便方法可以连续调用。这种模式常见于构建器&#xff08;Builder&#xff09;模式或流畅接口设计中。下面是一个简单的例子来说明如何实现链式调用。 假设我们有一个 Person 类&#xff0c;它有一些属性和一些方法&#xff…

Logback 快速入门

一、简介 Java 开源日志框架&#xff0c;以继承改善 log4j 为目的而生&#xff0c;是 log4j 创始人 Ceki Glc 的开源产品。 它声称有极佳的性能&#xff0c;占用空间更小&#xff0c;且提供其他日志系统缺失但很有用的特性。 其一大特色是&#xff0c;在 logback-classic 中本…

《PRIMES is in P》论文解析

摘要 本文提供了一个无条件确定性多项式时间算法&#xff0c;用于确定输入数字是素数还是合数。 简介 素数在数学中一般&#xff0c;特别是在数论中具有基本重要性。因此&#xff0c;研究素数的不同性质具有极大的意义。特别感兴趣的是那些能够有效确定一个数是否为素数的性质…

大模型算法备案流程最详细说明【流程+附件】

文章目录 一、语料安全评估 二、黑盒测试 三、模型安全措施评估 四、性能评估 五、性能评估 六、安全性评估 七、可解释性评估 八、法律和合规性评估 九、应急管理措施 十、材料准备 十一、【线下流程】大模型备案线下详细步骤说明 十二、【线上流程】算法备案填报…

实战:Redis实现排行榜、点赞和关注功能的基本操作

Redis是一款高性能的内存数据库&#xff0c;以其极快的读写速度和丰富的数据结构广泛应用于各种互联网服务中。本文将介绍如何基于Redis实现排行榜、点赞和关注功能&#xff0c;并提供相应的代码示例。 实战&#xff1a;Redis性能测试、调优和使用规范-CSDN博客 规范&#xf…

QT vs2019编译报错LNK2019无法解析的外部符号

严重性 代码 说明 项目 文件 行 禁止显示状态 错误 LNK2019 无法解析的外部符号 "public: __cdecl Dialog_Setting::Dialog_Setting(class QWidget *)" (??0Dialog_SettingQEAAPEAVQWidgetZ)&#xff0c;函数 "public: __cdecl QtWid…

网络安全-华为华三交换机防火墙日志解析示例

DEF_SYSLOG_SWITCH_HUAWEI.py 华为交换机日志解析示例 # -*- coding: utf8 -*- import time from DEF_COLOR import * ## 终端显示颜色def 时间戳_2_时间文本(时间戳, 时间文本格式%Y-%m-%d %H:%M:%S):#时间文本格式 %Y-%m-%d %H:%M:%S时间类 time.localtime(时间戳)时间…

KingbaseES8(人大金仓数据库)备份还原

KingbaseES8(人大金仓数据库)备份还原 1.用户角色备份 sys_dumpall -U system -r -f backup_AAAAAA/user.sql2.数据库备份 sys_dump -h ip -p 端口 -U 用户 –F c -f 备份路径/xxx.dmp 库名 sys_dump -h 127.0.0.1 -p 54321 -U system -F c -f backup_AAAAAA/AAAAAA.dmp A…

C# 连接SQLServer操作数据库问题

C#联合SQLServer开发时连接数据库报错connection 连接问题 报错信息&#xff1a; This operation requires a connection to the ‘master’ database. Unable to create a connection to the ‘master’ database because the original database connection has been opened a…

工业现场实测,焦化厂导烟车与装煤车风机实现无人作业

一、项目背景 作为我国重要的能源行业之一&#xff0c;焦化行业在国民经济中扮演着重要角色&#xff0c;焦化工艺是高温、高压、有毒物质等因素共同作用下进行的&#xff0c;因此存在着安全隐患&#xff0c;并伴有环境污染&#xff0c;改善焦化工艺的安全和环保问题是当前亟待…

Docker 安装指南

&#x1f341; 作者&#xff1a;知识浅谈&#xff0c;CSDN签约讲师&#xff0c;CSDN博客专家&#xff0c;华为云云享专家&#xff0c;阿里云专家博主 &#x1f4cc; 擅长领域&#xff1a;全栈工程师、爬虫、ACM算法 &#x1f525; 微信&#xff1a;zsqtcyw 联系我领取学习资料 …

Golang | Leetcode Golang题解之第287题寻找重复数

题目&#xff1a; 题解&#xff1a; func findDuplicate(nums []int) int {slow, fast : 0, 0for slow, fast nums[slow], nums[nums[fast]]; slow ! fast; slow, fast nums[slow], nums[nums[fast]] { }slow 0for slow ! fast {slow nums[slow]fast nums[fast]}return s…