File tree Expand file tree Collapse file tree 1 file changed +55
-0
lines changed Expand file tree Collapse file tree 1 file changed +55
-0
lines changed Original file line number Diff line number Diff line change
1
+ import scala .collection .mutable .HashMap
2
+
3
+ class Trie () {
4
+ class TrieNode {
5
+ val children : HashMap [Char , TrieNode ] = HashMap ()
6
+ var isEndOfWord = false
7
+ }
8
+
9
+ private var root : TrieNode = new TrieNode ()
10
+
11
+ def insert (word : String ): Unit = {
12
+ var curr = root
13
+ word.foreach(c => {
14
+ if (! curr.children.contains(c)) {
15
+ curr.children(c) = new TrieNode ()
16
+ }
17
+
18
+ curr = curr.children(c)
19
+ })
20
+
21
+ curr.isEndOfWord = true
22
+ }
23
+
24
+ def search (word : String ): Boolean = {
25
+ traverse(word) match {
26
+ case Some (endNode) => endNode.isEndOfWord
27
+ case None => false
28
+ }
29
+ }
30
+
31
+ def startsWith (prefix : String ): Boolean = {
32
+ traverse(prefix).isDefined
33
+ }
34
+
35
+ private def traverse (word : String ): Option [TrieNode ] = {
36
+ var curr = root
37
+ for (c <- word) {
38
+ if (! curr.children.contains(c)) {
39
+ return None
40
+ } else {
41
+ curr = curr.children(c)
42
+ }
43
+ }
44
+
45
+ return Some (curr)
46
+ }
47
+ }
48
+
49
+ /**
50
+ * Your Trie object will be instantiated and called as such:
51
+ * var obj = new Trie()
52
+ * obj.insert(word)
53
+ * var param_2 = obj.search(word)
54
+ * var param_3 = obj.startsWith(prefix)
55
+ */
You can’t perform that action at this time.
0 commit comments