1350 Remove Sub Folders From The Filesystem
1350 Remove Sub Folders From The Filesystem
Remove Sub-Folders from the Filesystem 
Given a list of folders folder, return the folders after removing all sub-folders in those folders. You may return the answer in any order.
If a folder[i] is located within another folder[j], it is called a sub-folder of it. A sub-folder of folder[j] must start with folder[j], followed by a “/”. For example, “/a/b” is a sub-folder of “/a”, but “/b” is not a sub-folder of “/a/b/c”.
The format of a path is one or more concatenated strings of the form: ‘/’ followed by one or more lowercase English letters.
1
For example, "/leetcode" and "/leetcode/problems" are valid paths while an empty string and "/" are not.
Example 1:
1
2
3
4
5
**Input:** folder = ["/a","/a/b","/c/d","/c/d/e","/c/f"]
**Output:** ["/a","/c/d","/c/f"]
**Explanation:** Folders "/a/b" is a subfolder of "/a" and "/c/d/e" is inside of folder "/c/d" in our filesystem.
Example 2:
1
2
3
4
5
**Input:** folder = ["/a","/a/b/c","/a/b/d"]
**Output:** ["/a"]
**Explanation:** Folders "/a/b/c" and "/a/b/d" will be removed because they are subfolders of "/a".
Example 3:
1
2
3
4
**Input:** folder = ["/a/b/c","/a/b/ca","/a/b/d"]
**Output:** ["/a/b/c","/a/b/ca","/a/b/d"]
Constraints:
1
2
3
4
5
1 <= folder.length <= 4 * 104
2 <= folder[i].length <= 100
folder[i] contains only lowercase letters and '/'.
folder[i] always starts with the character '/'.
Each folder name is **unique**.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
class Solution:
def removeSubfolders(self, folder: List[str]) -> List[str]:
folder.sort(key=lambda x : len(x))
mp = set()
for r in folder:
f_arr = r.split('/')
p = ""
include = True
for a in f_arr:
if a == "":
continue
if p + "/" + a in mp:
include = False
break
p += "/" + a
if include:
mp.add(p)
return list(mp)
This post is licensed under CC BY 4.0 by the author.