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; 
}

 

posted @   Annaprincess  阅读(1)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示