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