【Trie】AcWing 835.Trie字串統計(Tire入門)
阿新 • • 發佈:2022-05-16
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; }