aboutsummaryrefslogtreecommitdiff
path: root/remove_subfolder_filesystem.py
blob: 484831f748ad9ca43f1153249fc0c14a310795af (plain)
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
30
31
32
33
34
# 1233. Remove Sub-Folders from the Filesystem

"""
given a list of folders 'folder', return the folders after removing all the
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
'/'. the format of a path is one ormore concatenated strings of the form: '/'
followed by one or more lowercase english letters.
"""


class Solution(object):
    def removeSubfolders(self, folder):
        """
        :type folder: List[str]
        :rtype: List[str]
        """
        folder.sort(key=lambda x: len(x))
        vis = set()
        for i in folder:
            for j in range(2, len(i)):
                if i[j] == "/" and i[:j] in vis:
                    break
            else:
                vis.add(i)
        return list(vis)


if __name__ == "__main__":
    obj = Solution()
    print(obj.removeSubfolders(folder=["/a", "/a/b", "/c/d", "/c/d/e", "/c/f"]))
    print(obj.removeSubfolders(folder=["/a", "/a/b/c", "/a/b/d"]))
    print(obj.removeSubfolders(folder=["/a/b/c", "/a/b/ca", "/a/b/d"]))