「每日LeetCode」2023年2月8日
本文最后更新于:2023年3月19日 晚上
1233.删除子文件夹
1233.删除子文件夹
Category | Difficulty | Likes | Dislikes |
---|---|---|---|
algorithms | Medium (51.27%) | 118 | - |
Tags
Companies
你是一位系统管理员,手里有一份文件夹列表 folder,你的任务是要删除该列表中的所有 子文件夹,并以 任意顺序 返回剩下的文件夹。
如果文件夹 folder[i] 位于另一个文件夹 folder[j] 下,那么 folder[i] 就是 folder[j] 的 子文件夹 。
文件夹的「路径」是由一个或多个按以下格式串联形成的字符串:’/‘ 后跟一个或者多个小写英文字母。
- 例如,”/leetcode” 和 “/leetcode/problems” 都是有效的路径,而空字符串和 “/“ 不是。
示例 1:
输入:folder = [“/a”,”/a/b”,”/c/d”,”/c/d/e”,”/c/f”] 输出:[“/a”,”/c/d”,”/c/f”] 解释:”/a/b” 是 “/a” 的子文件夹,而 “/c/d/e” 是 “/c/d” 的子文件夹。
示例 2:
输入:folder = [“/a”,”/a/b/c”,”/a/b/d”] 输出:[“/a”] 解释:文件夹 “/a/b/c” 和 “/a/b/d” 都会被删除,因为它们都是 “/a” 的子文件夹。
示例 3:
输入: folder = [“/a/b/c”,”/a/b/ca”,”/a/b/d”] 输出: [“/a/b/c”,”/a/b/ca”,”/a/b/d”]
提示:
- 1 <= folder.length <= 4 * 104
- 2 <= folder[i].length <= 100
- folder[i] 只包含小写字母和 ‘/‘
- folder[i] 总是以字符 ‘/‘ 起始
- 每个文件夹名都是 唯一 的
思路
此代码的目的是从一组文件夹中移除子文件夹。它遍历文件夹数组,并按长度排序,以便可以先处理短路径。它将每个文件路径拆分为一组路径组件,并将它们记录到 map 对象中,以便当它遇到更长的路径时,它可以查看是否已经包含在路径中。如果存在,则该路径将被忽略,并且它将继续处理更长的路径。如果不存在,那么它将在结果数组中添加路径,并将其标记为 false,以便在以后的遍历中可以跳过它。最后,它将返回所有结果数组中的路径。
解答
1 |
|
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!