題目描述:
如果資料結構中有任何與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...
搜尋與資料結構
最簡單的搜尋當然分為兩種,深度優先搜尋和廣度優先搜尋。這兩種演算法分別採用了棧和佇列的資料結構來實現。對於深搜,優化方法通常是各種剪枝,主要包括最優化剪枝和可行性剪枝。對於廣搜,優化方式通常是進行重複去除和優先搜尋。通常都說能用深搜不用廣搜,其實在一定條件下確實有道理。在很多情況下,深度優先搜尋通常...
資料結構與演算法 搜尋
搜尋是在乙個專案集合中找到乙個特定專案的演算法過程,返回乙個布林值。搜尋的幾種常見方法 順序查詢 二分法查詢 二叉樹查詢 雜湊查詢 二分查詢也叫折半查詢,優點是比較次數少,但是只能是在有序的序列中才能用此方法,查詢過程 首先,假設表中元素是按公升序排列,將表中間位置記錄的關鍵字與查詢關鍵字比較,如果...