AcWing 835. Trie字符串统计
维护一个字符串集合,支持两种操作:
- “I x”向集合中插入一个字符串x;
- “Q x”询问一个字符串在集合中出现了多少次。
共有N个操作,输入的字符串总长度不超过1e5,字符串仅包含小写英文字母。
#include <bits/stdc++.h> using namespace std; const int N =1e5+10; int son[N][26]; int cnt [N]; int idx; char str[N]; void insert() { int p = 0; for (int i=0;str[i];i++) { int u=str[i]-'0'; 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]-'0'; if(!son[p][u]) return 0; p=son[p][u]; } return cnt[p]; } int main() { int n; scanf("%d", &n); char op[2]; while (n--) { scanf("%s%s", op, str); if (op[0] == 'I') insert(); else printf("%d\n", query()); } return 0; }

浙公网安备 33010602011771号