- Difficulty: Medium
- Tags: LeetCode, Medium, Depth-First Search, Design, Trie, String, leetcode-211
Problem
Design a data structure that supports adding new words and finding if a string matches any previously added string.
Implement the WordDictionary class:
- WordDictionary()Initializes the object.
- void addWord(word)Adds- wordto the data structure, it can be matched later.
- bool search(word)Returns- trueif there is any string in the data structure that matches- wordor- falseotherwise.- wordmay contain dots- '.'where dots can be matched with any letter.
Example:
Input
["WordDictionary","addWord","addWord","addWord","search","search","search","search"]
[[],["bad"],["dad"],["mad"],["pad"],["bad"],[".ad"],["b.."]]
Output
[null,null,null,null,false,true,true,true]
Explanation
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
Constraints:
- 1 <= word.length <= 25
- wordin- addWordconsists of lowercase English letters.
- wordin- searchconsist of- '.'or lowercase English letters.
- There will be at most 2dots inwordforsearchqueries.
- At most 104calls will be made toaddWordandsearch.