字串統計 Trie樹

2021-10-10 21:34:09 字數 1495 閱讀 7794

題目

維護乙個字串集合,支援兩種操作:

「i x」向集合中插入乙個字串x;

「q x」詢問乙個字串在集合**現了多少次。

共有n個操作,輸入的字串總長度不超過 10^5,字串僅包含小寫英文本母。

輸入格式

第一行包含整數n,表示運算元。

接下來n行,每行包含乙個操作指令,指令為」i x」或」q x」中的一種。

輸出格式

對於每個詢問指令」q x」,都要輸出乙個整數作為結果,表示x在集合**現的次數。

每個結果佔一行。

資料範圍

1≤n≤2∗10^4

輸入樣例

5i abc

q abc

q ab

i ab

q ab

輸出樣例:10

1

trie 樹,: 高效的儲存和查詢字串集合的資料結構。

舉例是見證定義的高效的方式。

例如: 在trie中儲存一系列字串。

;// 每個節點的最多26, cnt表示 以第n個節點結尾字串的個數,idx表示索引

int son[n][26

], cnt[n]

, idx;

char str[n]

;void

insert

(char str)

cnt[p]++;

}int

query

(char str)

return cnt[p];}

intmain()

// 下面是檢查上面的陣列的

for(

int i=

0; i<

10; i++

)for

(int i=

0; i<

20; i++

) cout << cnt[i]

<<

' ';

return0;

}

son[p][t] 中記錄的是第某層節點是 t 的下標,不是深度,這裡的p是後面根據這個去定位路徑的,每乙個開始遍歷p = 0, 然後就是根據++idx 賦值,因為idx是唯一的,所以查詢的時候可以根據這個來找字串出現沒。最後遍歷到字串結尾處,記錄這個字串出現的次數。

字串 Trie樹(字典樹)

關於這個字串的資料結構我就不多說什麼了,不知道的可以戳這裡.trie樹在oi中應用廣泛,時間優秀,缺點就是空間占用大。下文中我們將字符集大小稱為 k,模式串長度為p trie支援o np 建樹,o p 插入,查詢,刪除。可是如果二維陣列儲存的話,就要耗費kn 的空間,基本無法承受。空間上我們可以用指...

字串 Trie字典樹

目錄 trie字典樹 例題 1.什麼是字典樹?2.字典樹的作用及性質 3.建樹 code 效果圖 4.查詢 code 5.優勢 6.回到例題 code 7.結束語 8.練習 給出n個字串,以及m個詢問。每次詢問讀入乙個字串,求該字串是多少個字串的字首 每個字串長度小於10 2,n和m小於10 5。樣...

chenchen題解 Trie字串統計

維護乙個字串集合,支援兩種操作 1.i x 向集合中插入乙個字串x q x 詢問乙個字串在集合 現了多少次。共有n個操作,輸入的字串總長度不超過 10 5 字串僅包含小寫英文本母。輸入格式 第一行包含整數n,表示運算元。接下來n行,每行包含乙個操作指令,指令為 i xix 或 q xqx 中的一種。...