Re: [闲聊] 每日LeetCode

楼主: NTHUlagka (拉卡)   2023-03-19 14:17:42
211. Design Add and Search Words Data Structure
设计一个系统可以支援加新字(addWord)以及搜寻(search)字是否在系统的功能
具体来说就是要实作一个WordDictionary的类别,并有以下几个函数
1. WordDictionary: 初始化WordDictionary物件
2. void addWord(word): 加word到设计的系统中,以便做后续查找的功能
3. bool search(word): 从系统中找是否有符合word的字被加入,特别需要注意word中可
能会有'.'字符,代表的意思是可以是任何字母,也就是如果word是"w.a"则"waa" ~ "wza
"都是符合的答案
例子:
输入
["WordDictionary","addWord","addWord","addWord","search","search","search","se
arch"]
[[],["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: 每个字的长度,大于等于1,小于等于25
2, 3: word在addWord或是search的函数中只会有小写字母
4: 最多只会有三个'.'在search函数的参数word中
5: 最多只会呼叫addWord和search各10^4次
解题想法:
看到字串查找,我第一个想法就是Trie,那至于如何去支援search就得依靠dfs的思维去
递回查找答案
以这样的做法底下,时间复杂度addWord最多就是25 * 10^4,而search就会是25*25*25*10
^4,这复杂度其实是会TLE,不知道有没有更快的做法,反正我是想不到orz
C++ code
作者: DDFox (冒险者兼清洁工)   2023-03-19 14:21:00
大师

Links booklink

Contact Us: admin [ a t ] ucptt.com