Skip to content

Commit b1f1306

Browse files
committed
feat: solve implement trie prefix tree
1 parent 218f757 commit b1f1306

File tree

1 file changed

+52
-0
lines changed

1 file changed

+52
-0
lines changed
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
class Trie {
2+
/**
3+
1. understanding
4+
- Trie data structure
5+
- To process at most 3 * 10^4 calls in proper time, each call must be under O(N), where N is the length of word.
6+
- insert: insert data into Trie
7+
- search: find data from inserted Datas
8+
- startsWith: find
9+
2. strategy
10+
- a) use list to save inserted words
11+
- insert: O(1)
12+
- search: O(L * N), where L is the length of list, N is the length of each words.
13+
- startsWith: O(L * N)
14+
- total call to be 3 * 10^4, i assume each method call count at most 10^4 or linear correlation in 10^4 scale.
15+
- so, L <= 10^4, N <= 10^4
16+
- space: O(L * N)
17+
- it is enough to pass, but there are duplicates in space and also in excution count.
18+
- b)
19+
*/
20+
21+
private List<String> words;
22+
public Trie() {
23+
words = new ArrayList<>();
24+
}
25+
26+
public void insert(String word) {
27+
words.add(word);
28+
}
29+
30+
public boolean search(String word) {
31+
for (String w: words) {
32+
if (w.equals(word)) return true;
33+
}
34+
return false;
35+
}
36+
37+
public boolean startsWith(String prefix) {
38+
for (String w: words) {
39+
if (w.indexOf(prefix) == 0) return true;
40+
}
41+
return false;
42+
}
43+
}
44+
45+
/**
46+
* Your Trie object will be instantiated and called as such:
47+
* Trie obj = new Trie();
48+
* obj.insert(word);
49+
* boolean param_2 = obj.search(word);
50+
* boolean param_3 = obj.startsWith(prefix);
51+
*/
52+

0 commit comments

Comments
 (0)