File tree Expand file tree Collapse file tree 1 file changed +61
-0
lines changed
implement-trie-prefix-tree Expand file tree Collapse file tree 1 file changed +61
-0
lines changed Original file line number Diff line number Diff line change 1+ /**
2+ * 시간 복잡도: 주어진 문자열의 길이만큼 순회하므로, O(n)
3+ * 공간 복잡도: 삽입된 모든 문자열의 길이만큼 노드가 만들어지므로, 이를 m이라고 하면 O(m)
4+ */
5+ var Trie = function ( ) {
6+ this . isEnd = false ;
7+ this . children = { } ;
8+ } ;
9+
10+ /**
11+ * @param {string } word
12+ * @return {void }
13+ */
14+ Trie . prototype . insert = function ( word ) {
15+ let cur = this . children ;
16+ for ( const c of word ) {
17+ if ( ! cur [ c ] ) {
18+ cur [ c ] = { isEnd : false , children : { } } ;
19+ }
20+ cur = cur [ c ] ;
21+ }
22+ cur . isEnd = true ;
23+ } ;
24+
25+ /**
26+ * @param {string } word
27+ * @return {boolean }
28+ */
29+ Trie . prototype . search = function ( word ) {
30+ let cur = this . children ;
31+ for ( const c of word ) {
32+ if ( ! cur [ c ] ) {
33+ return false ;
34+ }
35+ cur = cur [ c ]
36+ }
37+ return cur . isEnd ;
38+ } ;
39+
40+ /**
41+ * @param {string } prefix
42+ * @return {boolean }
43+ */
44+ Trie . prototype . startsWith = function ( prefix ) {
45+ let cur = this . children ;
46+ for ( const c of prefix ) {
47+ if ( ! cur [ c ] ) {
48+ return false ;
49+ }
50+ cur = cur [ c ] ;
51+ }
52+ return true ;
53+ } ;
54+
55+ /**
56+ * Your Trie object will be instantiated and called as such:
57+ * var obj = new Trie()
58+ * obj.insert(word)
59+ * var param_2 = obj.search(word)
60+ * var param_3 = obj.startsWith(prefix)
61+ */
You can’t perform that action at this time.
0 commit comments