Skip to content

Commit 9c12f7c

Browse files
committed
solve: implement trie prefix tree
1 parent cb57b7f commit 9c12f7c

File tree

1 file changed

+35
-0
lines changed

1 file changed

+35
-0
lines changed
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
2+
class Trie {
3+
var children: [Character: Trie] = [:]
4+
var isEndOfWord = false
5+
6+
func insert(_ word: String) {
7+
guard !word.isEmpty else { return }
8+
var node = self
9+
for char in word {
10+
if node.children[char] == nil {
11+
node.children[char] = Trie()
12+
}
13+
node = node.children[char]!
14+
}
15+
node.isEndOfWord = true
16+
}
17+
18+
func search(_ word: String) -> Bool {
19+
guard let node = findNode(word) else { return false }
20+
return node.isEndOfWord
21+
}
22+
23+
func startsWith(_ prefix: String) -> Bool {
24+
return findNode(prefix) != nil
25+
}
26+
27+
private func findNode(_ word: String) -> Trie? {
28+
var node = self
29+
for char in word {
30+
guard let next = node.children[char] else { return nil }
31+
node = next
32+
}
33+
return node
34+
}
35+
}

0 commit comments

Comments
 (0)