30 lines
977 B
Python
30 lines
977 B
Python
# https://leetcode.com/problems/remove-sub-folders-from-the-filesystem
|
|
from typing import List
|
|
import copy
|
|
|
|
class Solution:
|
|
def removeSubfolders(self, folder: List[str]) -> List[str]:
|
|
trie = {}
|
|
def push(trie, words, index):
|
|
if index >= len(words):
|
|
trie['end'] = True
|
|
return
|
|
if words[index] not in trie:
|
|
trie[words[index]] = {}
|
|
return push(trie[words[index]], words, index + 1)
|
|
def pop(trie, curr, ret):
|
|
if trie == None:
|
|
return
|
|
if 'end' in trie:
|
|
ret.append('/' + '/'.join(curr))
|
|
return
|
|
for k, v in trie.items():
|
|
cur = copy.deepcopy(curr)
|
|
cur.append(k)
|
|
pop(v, cur, ret)
|
|
for each in folder:
|
|
words = each.split('/')
|
|
push(trie, words[1:], 0)
|
|
ret = []
|
|
pop(trie, [], ret)
|
|
return ret
|