#P1460. 2024.10.12-秋招-第3题-寻找重复目录
-
ID: 142
Type: Default
1000ms
256MiB
Tried: 122
Accepted: 15
Difficulty: 9
Uploaded By:
TaZi
Tags>树哈希模拟递归
2024.10.12-秋招-第3题-寻找重复目录
题目内容
某文件系统中存在一些重复的文件夹,需要找出来并删除。
重复文件夹的定义:如果存在两个(或以上)的文件夹,包含非空且相同的子文件夹,且子文件夹的结构也相同,则认为这些文件夹是重复文件夹。重复文件夹可以属于不同的文件层级。
例如,存在如下文件夹结构:
/a/x/y/
/a/z/
/b/x/y/
/b/z/
则文件夹 /a/ 和 /b/ 为重复文件夹。
如果再新增一个 /b/w/ 文件夹,则 /a/ 和 /b/ 不再是重复文件夹,但 /a/x/ 和 /b/x/ 仍为重复文件夹,/a/z/ 和 /b/z/ 不算作重复文件夹,因为 z 目录下是空的。
给你一组数组 paths ,表示系统中所有存在的文件夹结构,请找出所有的重复文件夹。
如果重复文件夹之间存在父子关系,只返回父文件夹即可(即如果 /a/ 和 /a/x/ 均为重复文件夹,只返回 /a/ 即可),并按字典序返回。
如果不存在重复目录,返回字符串 NotFound。
输入描述
输入由多行组成,第一行表示 paths 中的元素个数 n,第2~n+1行为 n 个路径名。
每个路径以 "/" 开头和结尾,中间每个层级以 "/" 分隔。
1≤paths.length≤2×104
paths 中每个路径的层数 ≤500
1≤ 每层文件夹名称的长度 ≤10
paths[i]由小写英文字母和 / 组成,
paths 中的路径不存在重复。
输出描述
返回所有重复文件夹的路径名,每行一个,路径的格式与输入格式一致,各个路径的顺序按字母升序排列。
样例1
输入
4
/a/x/y/
/a/z/
/b/x/y/
/b/z/
输出
/a/
/b/
样例2
输入
5
/a/x/y/
/a/z/
/b/x/y/
/b/z/
/b/w/
输出
/a/x/
/b/x/
样例3
输入
4
/a/x/y/
/a/z/
/b/z/
/b/w/
输出
NotFound
样例4 (塔子哥补充的,实际没有)
输入
11
/a/
/a/b/
/a/d/
/a/b/a/
/a/b/c/
/a/c/a/
/a/c/c/
/a/d/f/
/a/d/d/
/a/e/f/
/a/e/d/
输出
/a/b/
/a/c/
/a/d/
/a/e/
通知
扫码备注华为交流群~期待您的到来
- 湘ICP备2023007293号
- Worker 0, 19ms
- Powered by Hydro v4.14.1 Community