leetcode 1233. 删除子文件夹

删除子文件夹

1. 题目描述

你是一位系统管理员,手里有一份文件夹列表 folder,你的任务是要删除该列表中的所有 子文件夹,并以 任意顺序 返回剩下的文件夹。

我们这样定义「子文件夹」:

如果文件夹 folder[i] 位于另一个文件夹 folder[j] 下,那么 folder[i] 就是 folder[j] 的子文件夹。
文件夹的「路径」是由一个或多个按以下格式串联形成的字符串:

/ 后跟一个或者多个小写英文字母。
例如,/leetcode 和 /leetcode/problems 都是有效的路径,而空字符串和 / 不是。

注:来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/remove-sub-folders-from-the-filesystem

2. 输入输出分析

  • 1 <= folder.length <= 4 * 10^4
  • 2 <= folder[i].length <= 100 暴力应该不会超时
  • folder[i] 只包含小写字母和 /
  • folder[i] 总是以字符 / 起始 可能包含 /NULL 这种情况
  • 每个文件夹名都是唯一的 不存在重复的文件夹

3. 用例分析

输入:folder = ["/a","/a/b","/c/d","/c/d/e","/c/f"]
输出:["/a","/c/d","/c/f"]
解释:"/a/b/" 是 “/a” 的子文件夹,而 “/c/d/e” 是 “/c/d” 的子文件夹。

出现子文件夹情况直接删除

输入:folder = ["/a","/a/b/c","/a/b/d"]
输出:["/a"]
解释:文件夹 “/a/b/c” 和 “/a/b/d/” 都会被删除,因为它们都是 “/a” 的子文件夹。

同上

输入:folder = ["/a/b/c","/a/b/d","/a/b/ca"]
输出:["/a/b/c","/a/b/ca","/a/b/d"]

重点关注用力 ca 和 c 表示的不同目录

4. 题目解析

该题主要考察字符串处理

  • 从头开始遍历整个folder列表
  • 从头开始比较字符串 直到最短的串结束 若都相等 则 保留最小串 若不相等 则两个都应该保留
  • 应定义一个和folder列表同等大小的数组,用于标记该串是否应被删除
  • 最后开辟一个用于返回的列表 将标志为保留的串存入

5. 用例实现

待补充

6. 代码实现

待补充

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值