[图解] 数组模拟Trie树
输入样例:
5
I abc
Q abc
Q ab
I ab
Q ab
输出样例:
1
0
1
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 2e4+10;
int son[N][26],cnt[N],idx;
char str[N];
void Insert(char c[])
{
int level = 0;
for (int i = 0; c[i]; i ++ )//到'\0'停止
{
int u = c[i]-'a';
if(!son[level][u]) son[level][u] = ++idx;//注意son[N][26]中,每层只存一个
level = son[level][u];//模拟树的向下递归
}
cnt[level]++;//全部插入,叶节点增加,表示以当前前缀结尾的字符串数量
}
int Query(char c[])//与Insert()同理
{
int level = 0;
for (int i = 0; c[i]; i ++ )
{
int u = c[i]-'a';
if(!son[level][u]) return 0;
level = son[level][u];
}
return cnt[level];
}
int main()
{
int n;
char op;
cin >> n;
while (n -- )
{
scanf(" %c%s", &op, str);
if(op == 'I'){
Insert(str);
}else if(op == 'Q'){
cout << Query(str) << endl;
}
}
return 0;
}
本文来自博客园,作者:泥烟,CSDN同名, 转载请注明原文链接:https://www.cnblogs.com/Knight02/p/15799067.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具