Trie字符串统计板子

Trie字符串统计

#include <bits/stdc++.h>

using namespace std;


const int N = 1e5 + 10;

int son[N][26], cnt[N], idx;
char str[N];

void insert(){
    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(){
    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 n;

signed main(){
    cin >> n;
    while(n--){
        char op[2];
        scanf("%s%s", op, str);
        if(op[0] == 'I') insert();
        else printf("%d\n", query());
    }

    return 0;
}
posted @ 2025-04-07 15:06  awei040519  阅读(10)  评论(0)    收藏  举报