@@ -155,6 +155,24 @@ func removeSubfolders(folder []string) []string {
155
155
}
156
156
```
157
157
158
+ #### TypeScript
159
+
160
+ ``` ts
161
+ function removeSubfolders(folder : string []): string [] {
162
+ let s = folder [1 ];
163
+ return folder .sort ().filter (x => ! x .startsWith (s + ' /' ) && (s = x ));
164
+ }
165
+ ```
166
+
167
+ #### JavaScript
168
+
169
+ ``` js
170
+ function removeSubfolders (folder ) {
171
+ let s = folder[1 ];
172
+ return folder .sort ().filter (x => ! x .startsWith (s + ' /' ) && (s = x));
173
+ }
174
+ ```
175
+
158
176
<!-- tabs: end -->
159
177
160
178
<!-- solution: end -->
@@ -379,6 +397,85 @@ func removeSubfolders(folder []string) []string {
379
397
}
380
398
```
381
399
400
+ #### TypeScript
401
+
402
+ ``` ts
403
+ function removeSubfolders(folder : string []): string [] {
404
+ const createTrie = (): T => ({ ' #' : false , children: {} });
405
+ const trie = createTrie ();
406
+
407
+ for (const f of folder ) {
408
+ const path = f .split (' /' );
409
+ path .shift ();
410
+
411
+ let node = trie ;
412
+ for (const p of path ) {
413
+ if (! node .children [p ]) node .children [p ] = createTrie ();
414
+ node = node .children [p ];
415
+ }
416
+ node [' #' ] = true ;
417
+ }
418
+
419
+ const ans: string [] = [];
420
+ const dfs = (trie : T , path = ' ' ) => {
421
+ if (trie [' #' ]) {
422
+ ans .push (path );
423
+ return ;
424
+ }
425
+
426
+ for (const key in trie .children ) {
427
+ dfs (trie .children [key ], path + ' /' + key );
428
+ }
429
+ };
430
+
431
+ dfs (trie );
432
+
433
+ return ans ;
434
+ }
435
+
436
+ type T = {
437
+ ' #' : boolean ;
438
+ children: Record <string , T >;
439
+ };
440
+ ```
441
+
442
+ #### JavaScript
443
+
444
+ ``` js
445
+ function removeSubfolders (folder ) {
446
+ const createTrie = () => ({ ' #' : false , children: {} });
447
+ const trie = createTrie ();
448
+
449
+ for (const f of folder) {
450
+ const path = f .split (' /' );
451
+ path .shift ();
452
+
453
+ let node = trie;
454
+ for (const p of path) {
455
+ if (! node .children [p]) node .children [p] = createTrie ();
456
+ node = node .children [p];
457
+ }
458
+ node[' #' ] = true ;
459
+ }
460
+
461
+ const ans = [];
462
+ const dfs = (trie , path = ' ' ) => {
463
+ if (trie[' #' ]) {
464
+ ans .push (path);
465
+ return ;
466
+ }
467
+
468
+ for (const key in trie .children ) {
469
+ dfs (trie .children [key], path + ' /' + key);
470
+ }
471
+ };
472
+
473
+ dfs (trie);
474
+
475
+ return ans;
476
+ }
477
+ ```
478
+
382
479
<!-- tabs: end -->
383
480
384
481
<!-- solution: end -->
0 commit comments