Skip to content

Commit 3758421

Browse files
committed
feat: implement-trie-prefix-tree
1 parent 1524cc4 commit 3758421

File tree

1 file changed

+44
-0
lines changed

1 file changed

+44
-0
lines changed
+44
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
/**
2+
* <a href="https://leetcode.com/problems/implement-trie-prefix-tree/">week05-3.implement-trie-prefix-tree</a>
3+
* <li>Description: Implement the Trie class </li>
4+
* <li>Topics: Hash Table, String, Design, Trie </li>
5+
* <li>Time Complexity: O(N*K), Runtime 40ms </li>
6+
* <li>Space Complexity: O(N*K), Memory 56.07MB </li>
7+
*/
8+
class Trie {
9+
private boolean end;
10+
private final Map<Character, Trie> children;
11+
12+
public Trie() {
13+
children = new HashMap<>();
14+
}
15+
16+
public void insert(String word) {
17+
Trie node = this;
18+
for(Character c : word.toCharArray()) {
19+
node = node.children.computeIfAbsent(c, k -> new Trie());
20+
}
21+
node.end = true;
22+
}
23+
24+
public boolean search(String word) {
25+
Trie node = this;
26+
for(Character c : word.toCharArray()) {
27+
node = node.children.get(c);
28+
if(node == null) {
29+
return false;
30+
}
31+
}
32+
return node.end;
33+
}
34+
35+
public boolean startsWith(String prefix) {
36+
Trie node = this;
37+
for(Character c : prefix.toCharArray()) {
38+
node = node.children.get(c);
39+
if(node == null) {
40+
return false;
41+
}
42+
}
43+
return node != null;
44+
}

0 commit comments

Comments
 (0)