当前位置:网站首页>Trie思想及模板
Trie思想及模板
2022-08-03 17:14:00 【lcy2023】
参考博文:https://www.acwing.com/solution/content/14695/
课程链接:https://www.acwing.com/video/260/
例题链接:https://www.acwing.com/problem/content/837/
思想
用于高效的存储和查找字符串集合的数据结构,用Trie树的字符串一般要么是小写字母要么都是大写字母,类型不会多,字符串的长度也不会太长
root为空节点,图中五角星的意思是标记有以该字母结尾的字符串,代码表示是cnt数组,记录以该字母结尾的字符串的数量
例题
该题目中都为26个字母,所以可以开辟son[][26]数组,来映射26个字母,该数组表示的是子节点,用son[]某节点的所有子节点,son[]列映射为子节点的值,son[][]的值表示该节点是第几个加入的不重复的节点。cnt[]数组标识字符串的结束,idx用来确定节点是否存在
代码
#include <iostream>
using namespace std;
const int N = 100010;
int son[N][26], cnt[N], idx;
char str[N];
void insert(char *str)
{
int p = 0;
for (int i = 0; str[i]; i ++ )
{
int u = str[i] - 'a';
if (!son[p][u]) son[p][u] = ++ idx;
p = son[p][u];
}
cnt[p] ++ ;
}
int query(char *str)
{
int p = 0;
for (int i = 0; str[i]; i ++ )
{
int u = str[i] - 'a';
if (!son[p][u]) return 0;
p = son[p][u];
}
return cnt[p];
}
int main()
{
int n;
scanf("%d", &n);
while (n -- )
{
// 此处设置成op[2],而不是char op,是因为char op用scanf("%c")会读入一些空格或回车
// 而char op[2]用scanf("%s")会忽略空格和回车
char op[2];
scanf("%s%s", op, str);
if (*op == 'I') insert(str);
else printf("%d\n", query(str));
}
return 0;
}
边栏推荐
- sphinx error connection to 127.0.0.1:9312 failed (errno=0, msg=)
- CC2530_ZigBee+华为云IOT:设计一套属于自己的冷链采集系统
- 浅谈Service&nbsp;Mesh对业务系统的价值
- 为什么我用了Redis之后,系统的性能却没有提升
- JVS低代码-多数据模型与数据联动配置举例
- 【LeetCode】899. 有序队列
- #yyds干货盘点# 面试必刷TOP101:两个链表的第一个公共结点
- 华为ECS云服务器上安装Docker及部署Redis详细教程【华为云至简致远】
- 超分重建数据集
- EasyExcel implements dynamic column parsing and table storage
猜你喜欢
随机推荐
TiKV & TiFlash 加速复杂业务查询丨TiFlash 应用实践
茅台日赚1.65亿,经销商日子却越来越难
How ArkUI adapter somehow the screen
“LaMDA 存在种族歧视,谷歌的 AI 伦理不过是‘遮羞布’!”
【机器学习】机器学习的基本概念/术语2
酷开科技 × StarRocks:统一 OLAP 分析引擎,全面打造数字化的 OTT 模式
Web3的开源为何会如此受到人们喜爱?
高薪程序员&面试题精讲系列132之微服务之间如何进行通信?服务熔断是怎么回事?你熟悉Hystrix吗?
最强分布式锁工具:Redisson
SwinIR combat: record the training process of SwinIR in detail
fastposter v2.9.0 程序员必备海报生成器
融云「音视频架构实践」技术专场【内含完整PPT】
EasyExcel implements dynamic column parsing and table storage
sphinx error connection to 127.0.0.1:9312 failed (errno=0, msg=)
J9货币论:数字经济为全球经济复苏注入力量
如何在 DataWorks 中 写SQL语句监控数据的变化到达一定的值 进行提示
一些嵌入式软件设计经验
EMQX Newsletter 2022-07|EMQX 5.0 正式发布、EMQX Cloud 新增 2 个数据库集成
Description of the functional scenario of "collective storage and general governance" in the data center
JVS低代码移动端接入方案









