【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号
浙公网安备 33010602011771号