File tree Expand file tree Collapse file tree 1 file changed +35
-0
lines changed
implement-trie-prefix-tree Expand file tree Collapse file tree 1 file changed +35
-0
lines changed Original file line number Diff line number Diff line change
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
+ }
You can’t perform that action at this time.
0 commit comments