trie板子

#include <bits/stdc++.h>
#define ll long long
using namespace std;
/*
	字典树trie板子
	1.插入 insert trie树上插入字符串str
	2.查询 query 查询str的出现次数
*/
const int N = 100001;
int ch[N][26], cnt[N], idx;

int query(string &str);
void insert(string &str);

void insert(string &str) { //str从0开始,[a-z]
	int p = 0; //指向根节点
	for (int i = 0; i < str.size(); i++) {
		int j = str[i] - 'a';
		if (!ch[p][j])
			ch[p][j] = ++idx;
		p = ch[p][j];
	}
	cnt[p]++;
}

void query(string &str) {
	int p = 0;
	for (int i = 0; i < str.size(); i++) {
		int j = str[i] - 'a';
		if (!ch[p][j])
			return 0;
		p = ch[p][j];
	}
	return cnt[p];
}
posted @ 2025-08-18 16:37  Gusare  阅读(5)  评论(0)    收藏  举报