【Trie】AcWing 835.Trie字符串统计(Tire入门)
AcWing835. Trie字符串统计

题解
Trie高效存储和查询字符串集合的数据结构
Trie树存储:结尾打上标记,表示为结尾

Trie树查找:根据逐个字符查找,能查找到所有字符且具有结尾标记。
#include <iostream>
using namespace std;
const int N = 1e5 + 10;
int son[N][26], cnt[N], idx; //下标0即是根节点也是空节点
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;
char c, str[N];
cin >> n;
while(n -- )
{
cin >> c >> str;
if(c == 'I') insert(str);
else cout << query(str) << endl;
}
return 0;
}

浙公网安备 33010602011771号