Post

1350 Remove Sub Folders From The Filesystem

1350 Remove Sub Folders From The Filesystem

Remove Sub-Folders from the Filesystem image

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.