目錄樹的形態:樹根為空值,有26子節點(根據實際情況,可能具體問題不需要真實有。另外不同問題還可以擴充套件,比如加大小寫兼有的需要雙倍,但需要做好規定),而每乙個子節點另外又包含26個子節點,根據需要遞迴下去。
功能:從樹根到某一結點的路徑可以代表乙個具體的字串。
下面的展示了簡單的結構。
題目:很多單詞有10個以內的小寫單詞組成,問這些單詞中以某個字串為字首的單詞有多少個?
思路:簡單字典樹,字首匹配問題。
本題可採用陣列建樹的方式,以節約空間。num陣列儲存節點資訊(即個數),輔助的二維陣列tire [ i ] [ j ]儲存父節點i的第j個節點在陣列中的位置。
插入操作,依次遍歷字串,並尋找到相應的節點在陣列中位置使其加一,如果沒有該節點則增加節點。
查詢操作,遍歷字串,如果發現沒有當前對應的結點,則返回0,如此判斷到遍歷結束,返回整個字串對應結點的數量。
**
#include #include#include#includeusing namespace std;
int pos = 0;
int tire[1010000][26];
int num[1010000];
void insert(char s )
tmp = tire[tmp][x];
num[tmp]++;
}}int find(char s)
return num[tmp];
}int main()
while (gets(s))
}
字串 Trie樹(字典樹)
關於這個字串的資料結構我就不多說什麼了,不知道的可以戳這裡.trie樹在oi中應用廣泛,時間優秀,缺點就是空間占用大。下文中我們將字符集大小稱為 k,模式串長度為p trie支援o np 建樹,o p 插入,查詢,刪除。可是如果二維陣列儲存的話,就要耗費kn 的空間,基本無法承受。空間上我們可以用指...
字典樹字串匹配
哦,不!你不小心把乙個長篇文章中的空格 標點都刪掉了,並且大寫也弄成了小寫。像句子 i reset the computer.it still didn t boot 已經變成了 iresetthecomputeritstilldidntboot 在處理標點符號和大小寫之前,你得先把它斷成詞語。當然...
字串 Trie字典樹
目錄 trie字典樹 例題 1.什麼是字典樹?2.字典樹的作用及性質 3.建樹 code 效果圖 4.查詢 code 5.優勢 6.回到例題 code 7.結束語 8.練習 給出n個字串,以及m個詢問。每次詢問讀入乙個字串,求該字串是多少個字串的字首 每個字串長度小於10 2,n和m小於10 5。樣...