Trie树
Trie树
作用:高效存储和查找字符串的数据结构
#include<bits/stdc++.h>
using namespace std;
int idx;//下标
const int N=1e5;
int cnt[N];//cnt[i]表示以i结尾的单词出现次数
int son[N][26];//son[i][j]表示i的子节点j的下标
char s[N] ;//字符串
void insert(string a){
int p=0;//根节点出发
for(int i=0;a[i];i++){//遍历整个字符串
int u=a[i]-'a';//将字母转数字,可以作为数组下标
if(!son[p][u]){//不存在就插入
son[p][u]=++idx;
}
p=son[p][u];//下一层
}
cnt[p]++;//记录该单词出现次数,用结尾p做下标
}
int query(string a){
int p=0;
for(int i=0;a[i];i++){
int u=a[i]-'a';
if(!son[p][u]){
return 0;//不存在说明查不到
}
p=son[p][u];
}
return cnt[p];//单词出现个数
}
int main(){
int n;
cin>>n;
char op;//操作符
string x;
while(n--){
cin>>op;
if(op=='I') {
cin>>x;
insert(x);
}
else if(op=='Q'){
cin>>x;
cout<<query(x)<<endl;
}
}
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具