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