211 新增與搜尋單詞 資料結構設計

2021-10-24 07:12:02 字數 2173 閱讀 3277

題目描述:

如果資料結構中有任何與word匹配的字串,則bool search(word)返回true,否則返回false。 單詞可能包含點「。」 點可以與任何字母匹配的地方。

請你設計乙個資料結構,支援 新增新單詞 和 查詢字串是否與任何先前新增的字串匹配 。

實現詞典類 worddictionary :

worddictionary() 初始化詞典物件

void addword(word) 將 word 新增到資料結構中,之後可以對它進行匹配

bool search(word) 如果資料結構中存在字串與 word 匹配,則返回 true ;否則,返回 false 。word 中可能包含一些 『.』 ,每個 . 都可以表示任何乙個字母。

示例:

輸入:[「worddictionary」,「addword」,「addword」,「addword」,「search」,「search」,「search」,「search」]

[,[「bad」],[「dad」],[「mad」],[「pad」],[「bad」],[".ad"],[「b…」]]

輸出:[null,null,null,null,false,true,true,true]

解釋:worddictionary worddictionary = new worddictionary();

worddictionary.addword(「bad」);

worddictionary.addword(「dad」);

worddictionary.addword(「mad」);

worddictionary.search(「pad」); // return false

worddictionary.search(「bad」); // return true

worddictionary.search(".ad"); // return true

worddictionary.search(「b…」); // return true

1 <= word.length <= 500

addword 中的 word 由小寫英文本母組成

search 中的 word 由 『.』 或小寫英文本母組成

最呼叫多 50000 次 addword 和 search

方法1:

主要思路:

(1)使用字首樹實現;

class

worddictionary};

node* root;

//根節點

/** initialize your data structure here. */

worddictionary()

/** adds a word into the data structure. */

void

addword

(string word)

cur=cur-

>children[ch];}

cur-

>is_end=

true;}

/** returns if the word is in the data structure. a word could contain the dot character '.' to represent any one letter. */

bool

search

(string word)

bool

helper

(node*root,string&word,

int left)

if(word[left]

=='.')}

}if(root-

>children.

count

(word[left]))

return

false;}

};/** * your worddictionary object will be instantiated and called as such:

* worddictionary* obj = new worddictionary();

* obj->addword(word);

* bool param_2 = obj->search(word);

*/

178 新增與搜尋單詞 資料結構設計

題目描述 設計乙個支援以下兩種操作的資料結構 void addword word bool search word search word 可以搜尋文字或正規表示式字串,字串只包含字母 或 a z 可以表示任何乙個字母。示例 addword bad addword dad addword mad s...

搜尋與資料結構

最簡單的搜尋當然分為兩種,深度優先搜尋和廣度優先搜尋。這兩種演算法分別採用了棧和佇列的資料結構來實現。對於深搜,優化方法通常是各種剪枝,主要包括最優化剪枝和可行性剪枝。對於廣搜,優化方式通常是進行重複去除和優先搜尋。通常都說能用深搜不用廣搜,其實在一定條件下確實有道理。在很多情況下,深度優先搜尋通常...

資料結構與演算法 搜尋

搜尋是在乙個專案集合中找到乙個特定專案的演算法過程,返回乙個布林值。搜尋的幾種常見方法 順序查詢 二分法查詢 二叉樹查詢 雜湊查詢 二分查詢也叫折半查詢,優點是比較次數少,但是只能是在有序的序列中才能用此方法,查詢過程 首先,假設表中元素是按公升序排列,將表中間位置記錄的關鍵字與查詢關鍵字比較,如果...