leetcode-159周赛-5231-删除子文件夹

题目描述:

 

 

 

 

 自己的提交:

class Solution:
    def removeSubfolders(self, folder: List[str]) -> List[str]:
        d = {}
        res = []
        for f in folder:
            l_f = f.split("/")[1:]
            node = d
            for i in l_f:
                node = node.setdefault(i,{})
                if "#" in node:
                    break
            node["#"] = "#"
        def helper(node,ans):
            if "#" in node:
                res.append(ans)
                return
            for i,v in node.items():
                helper(v,ans+"/"+i)
        for i,v in d.items():
            helper(v,"/"+i)
        return res

另:

class Solution:
    def removeSubfolders(self, folder: List[str]) -> List[str]:
        folder.sort(key = lambda x: len(x))
        d = set()
        ans = list()
        for f in folder:
            path = f.split("/")
            flag = True
            for i in range(2, len(path)):
                cur = "/".join(path[:i])
                if cur in d:
                    flag = False
                    break
            if flag:
                d.add(f)
                ans.append(f)
        return ans

 

posted @ 2019-10-21 09:22  oldby  阅读(206)  评论(0编辑  收藏  举报