簡介
字典樹(字首樹)是字串匹配問題的常用演算法之一,是kmp演算法的公升級版本,kmp解決單一字串匹配問題效果極佳,但是對於多個字串匹配的問題,需要使用字典樹效果才顯著。
**
#include
using
namespace std;
const
int num =26;
typedef
struct trienode
} trienode;
class
trie
void
insert
(string& word)
location = location-
>next[word[i]
-'a'];
} location-
>isword =
true
;return;}
bool
search
(string& word)
return
(location !=
nullptr
&& location-
>isword);}
bool
startwith
(string& prefix)
return
true;}
void
deletetrie
(trienode *root)
delete root;}}
;int
main
(void);
vector v
; string word ="";
trie tree;
for(
int i =
0;i <
(int
)v.size()
;++i)
cout << tree.
search
(word)
<< endl;
return0;
}
演算法之字典樹
字典樹以字首訪問資料,就像檔案系統一樣,從根出發,只要知道某段資料的字首,就能找到相應的資料。同時,當存入新資料時,需建立新節點,然後將新資料依次插入對應字段。本例中字典樹以英文小寫字母的基礎資料。struct node node child 26 bool flag insert s,trie n...
字典樹經典問題
題意 zeus 和 prometheus 做了乙個遊戲,prometheus 給 zeus 乙個集合,集合中包含了n個正整數,隨後 prometheus 將向 zeus 發起m次詢問,每次詢問中包含乙個正整數 s 之後 zeus 需要在集合當中找出乙個正整數 k 使得 k 與 s 的異或結果最大,輸...
字典樹演算法
trie字典樹主要用於儲存字串,trie 的每個 node 儲存乙個字元。用鍊錶來描述的話,就是乙個字串就是乙個鍊錶。每個node都儲存了它的所有子節點。字典樹顧名思義是乙個樹形結構,它的建立和二叉樹類似。它可以實現字首搜尋。trie 樹利用字串的公共字首,逐層建立起一棵多叉樹。在檢索時類似於在字典...