File tree Expand file tree Collapse file tree 1 file changed +46
-0
lines changed
implement-trie-prefix-tree Expand file tree Collapse file 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