[leetcode] 1233. Remove Sub-Folders from the Filesystem

网友投稿 530 2022-11-08

[leetcode] 1233. Remove Sub-Folders from the Filesystem

[leetcode] 1233. Remove Sub-Folders from the Filesystem

Description

Given a list of folders, remove all sub-folders in those folders and return in any order the folders after removing.

If a folder[i] is located within another folder[j], it is called a sub-folder of it.

The format of a path is one or more concatenated strings of the form: / followed by one or more lowercase English letters. For example, /leetcode and /leetcode/problems are valid paths while an empty string and / are not.

Example 1:

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:

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:

Input: folder = ["/a/b/c","/a/b/ca","/a/b/d"]Output: ["/a/b/c","/a/b/ca","/a/b/d"]

Constraints:

1 <= folder.length <= 4 * 10^4.2 <= folder[i].length <= 100.folder[i] contains only lowercase letters and ‘/’.folder[i] always starts with character ‘/’.Each folder name is unique.

分析

题目的意思是:保留一个数组里面的所有根目录,其他的删除。 我看见这题一开始的想法就是暴力破解,发现肯定复杂度很高,后面发现先排序,然后有同一根目录的目录就会被排序到一起,这样的话再遍历一次找出所有的根目录就行了。

代码

class Solution: def removeSubfolders(self, folder: List[str]) -> List[str]: folder.sort() res=[] parent=' ' for f in folder: if(not f.startswith(parent)): res.append(f) parent=f+'/' return res

参考文献

​​[LeetCode] [Python] Easy to understand, Sort & Check Parent, Faster than 100%​​

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:[leetcode] 1550. Three Consecutive Odds
下一篇:[leetcode] 890. Find and Replace Pattern
相关文章

 发表评论

暂时没有评论,来抢沙发吧~