leetcode

Solution to some Leetcode problems written in C++
git clone git://git.dimitrijedobrota.com/leetcode.git
Log | Files | Refs | README | LICENSE

commit eda9eb59b892f728e009d7c85b1246e308cc0025
parent db83ec26cb04c037bd48bfaa9a824ff56f108183
author Dimitrije Dobrota <mail@dimitrijedobrota.com>
date Sun, 19 Mar 2023 13:37:09 +0100

Daily Problem

Diffstat:
A Problems/0211.cpp | ++++++++++++++++++++++++++++++++
M README.md | +

2 files changed, 33 insertions(+), 0 deletions(-)


diff --git a/ Problems/0211.cpp b/ Problems/0211.cpp

@@ -0,0 +1,32 @@
class WordDictionary {
vector<WordDictionary *> children;
bool isEndOfWord = false;
;
public:
WordDictionary() : children(vector<WordDictionary *>(26, nullptr)) {}
void addWord(string word) {
WordDictionary *crnt = this;
for (char c : word) {
if (crnt->children[c - 'a'] == nullptr)
crnt->children[c - 'a'] = new WordDictionary();
crnt = crnt->children[c - 'a'];
}
crnt->isEndOfWord = true;
}
bool search(string word) {
WordDictionary *crnt = this;
for (int i = 0; i < word.length(); ++i) {
if (word[i] == '.') {
for (auto c : crnt->children)
if (c && c->search(word.substr(i + 1))) return true;
return false;
}
if (crnt->children[word[i] - 'a'] == nullptr) return false;
crnt = crnt->children[word[i] - 'a'];
}
return crnt && crnt->isEndOfWord;
}
};

diff --git a/ README.md b/ README.md

@@ -173,6 +173,7 @@ for solving problems. | 0208 | Medium | [Implement Trie (Prefix Tree)](Problems/0208.cpp) | | 0209 | Medium | [Minimum Size Subarray Sum](Problems/0209.cpp) | | 0210 | Medium | [Course Schedule II](Problems/0210.cpp) |
| 0211 | Medium | [Design Add and Search Words Data Structure](Problems/0211.cpp) |
| 0213 | Medium | [House Robber II](Problems/0213.cpp) | | 0215 | Medium | [Kth Largest Element in an Array](Problems/0215.cpp) | | 0217 | Easy | [Contains Duplicate](Problems/0217.cpp) |