Skip to content

Commit 62ef031

Browse files
committed
implement-trie-prefix-tree solution
1 parent a3328d7 commit 62ef031

File tree

1 file changed

+65
-0
lines changed

1 file changed

+65
-0
lines changed

implement-trie-prefix-tree/lhc0506.js

+65
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
2+
var Trie = function() {
3+
this.isEnd = false;
4+
};
5+
6+
/**
7+
* @param {string} word
8+
* @return {void}
9+
*/
10+
Trie.prototype.insert = function(word) {
11+
let currentTrie = this;
12+
word.split('').forEach(alphabet => {
13+
if (!currentTrie[alphabet]) {
14+
currentTrie[alphabet] = new Trie();
15+
}
16+
currentTrie = currentTrie[alphabet];
17+
});
18+
19+
currentTrie.isEnd = true;
20+
};
21+
22+
/**
23+
* @param {string} word
24+
* @return {boolean}
25+
*/
26+
Trie.prototype.search = function(word) {
27+
let currentTrie = this;
28+
29+
for (let alphabet of word) {
30+
if (!currentTrie[alphabet]) {
31+
return false;
32+
}
33+
currentTrie = currentTrie[alphabet];
34+
}
35+
36+
return currentTrie.isEnd;
37+
};
38+
39+
/**
40+
* @param {string} prefix
41+
* @return {boolean}
42+
*/
43+
Trie.prototype.startsWith = function(prefix) {
44+
let currentTrie = this;
45+
46+
for (let alphabet of prefix) {
47+
if (!currentTrie[alphabet]) {
48+
return false;
49+
}
50+
currentTrie = currentTrie[alphabet];
51+
}
52+
53+
return true;
54+
};
55+
56+
/**
57+
* Your Trie object will be instantiated and called as such:
58+
* var obj = new Trie()
59+
* obj.insert(word)
60+
* var param_2 = obj.search(word)
61+
* var param_3 = obj.startsWith(prefix)
62+
*/
63+
64+
65+
// insert 시간복잡도: O(n), search 시간복잡도: O(n), startsWith 시간복잡도: O(n)

0 commit comments

Comments
 (0)