211. Design Add and Search Words Data Structure
題目網址:https://leetcode.cn/problems/design-add-and-search-words-data-structure/
題意:請設計一資料結構, 支持新增單字、搜尋 string 是否和先前新增的單字匹配。
實作
WordDictionaryclass:
WordDictionary():初始化 instancevoid addWord(word):將word新增到資料結構中, 之後可以對它進行匹配bool search(word):如果資料結構中存在 string 和word匹配, 則返回true; 否則, 返回false。word中可能包含一些., 每個.都可表示成任何一個 char注意:
addWord中的word只由小寫字母所組成search中的word由.or 小寫字母所組成

Solution:
想法:利用 Trie + DFS, 一旦遇到
., 就對當前 node 中所有的 child 進行 DFS
class TrieNode { |
- time:
WordDictionary():$O(1)$addWord(word):$O(n)$ ➔ 其中n為word.size()search(word):$O(26^n)$ ➔ worse case :word中每個 char 皆為., 這樣每個 char 都有 26 種可能
- space:$O(T)$ ➔ $O(26 \cdot T)$, 其中
T為trie中所有的 node 數
本部落格所有文章除特別聲明外,均採用 CC BY-NC-SA 4.0 許可協議。轉載請註明來自 Zako's Blog!
評論