211. Design Add and Search Words Data Structure
題目網址:https://leetcode.cn/problems/design-add-and-search-words-data-structure/
題意:請設計一資料結構, 支持新增單字、搜尋 string 是否和先前新增的單字匹配。
實作
WordDictionary
class:
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!
評論