File tree 1 file changed +64
-0
lines changed
implement-trie-prefix-tree 1 file changed +64
-0
lines changed Original file line number Diff line number Diff line change
1
+ //
2
+ // 208. Implement Trie (Prefix Tree)
3
+ // https://leetcode.com/problems/implement-trie-prefix-tree/description/
4
+ // Dale-Study
5
+ //
6
+ // Created by WhiteHyun on 2024/06/28.
7
+ //
8
+
9
+ // MARK: - Node
10
+
11
+ private class Node {
12
+ var children : [ Character : Node ]
13
+ let value : Character
14
+ var isEndOfWord : Bool
15
+
16
+ init ( children: [ Character : Node ] = [ : ] , value: Character , isEndOfWord: Bool = false ) {
17
+ self . children = children
18
+ self . value = value
19
+ self . isEndOfWord = isEndOfWord
20
+ }
21
+ }
22
+
23
+ // MARK: - Trie
24
+
25
+ class Trie {
26
+ private var root : Node
27
+
28
+ init ( ) {
29
+ root = . init( value: " $ " )
30
+ }
31
+
32
+ func insert( _ word: String ) {
33
+ var node = root
34
+ for character in word {
35
+ if node. children [ character] == nil {
36
+ node. children [ character] = Node ( value: character)
37
+ }
38
+ node = node. children [ character] !
39
+ }
40
+ node. isEndOfWord = true
41
+ }
42
+
43
+ func search( _ word: String ) -> Bool {
44
+ var node = root
45
+ for character in word {
46
+ if node. children [ character] == nil {
47
+ return false
48
+ }
49
+ node = node. children [ character] !
50
+ }
51
+ return node. isEndOfWord
52
+ }
53
+
54
+ func startsWith( _ prefix: String ) -> Bool {
55
+ var node = root
56
+ for character in prefix {
57
+ if node. children [ character] == nil {
58
+ return false
59
+ }
60
+ node = node. children [ character] !
61
+ }
62
+ return true
63
+ }
64
+ }
You can’t perform that action at this time.
0 commit comments