經典演算法之字典樹

2021-10-17 23:13:44 字數 1032 閱讀 9711

簡介

字典樹(字首樹)是字串匹配問題的常用演算法之一,是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 樹利用字串的公共字首,逐層建立起一棵多叉樹。在檢索時類似於在字典...