Skip to content

Commit d17c24c

Browse files
committed
Solution Implement trie prefix tree
1 parent 8788330 commit d17c24c

File tree

1 file changed

+46
-0
lines changed

1 file changed

+46
-0
lines changed
+46
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
class TrieNode {
2+
var children: [Character: TrieNode] = [:]
3+
var isEnd: Bool = false
4+
}
5+
6+
class Trie {
7+
private let root: TrieNode
8+
9+
init() {
10+
root = TrieNode()
11+
}
12+
13+
func insert(_ word: String) {
14+
var current = root
15+
for char in word {
16+
if current.children[char] == nil {
17+
current.children[char] = TrieNode()
18+
}
19+
current = current.children[char]!
20+
}
21+
current.isEnd = true
22+
}
23+
24+
func search(_ word: String) -> Bool {
25+
guard let node = findNode(word) else {
26+
return false
27+
}
28+
return node.isEnd
29+
}
30+
31+
func startsWith(_ prefix: String) -> Bool {
32+
return findNode(prefix) != nil
33+
}
34+
35+
private func findNode(_ prefix: String) -> TrieNode? {
36+
var current = root
37+
for char in prefix {
38+
guard let next = current.children[char] else {
39+
return nil
40+
}
41+
current = next
42+
}
43+
return current
44+
}
45+
}
46+

0 commit comments

Comments
 (0)