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