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