Leetcode 的每日挑战 — 19/09/2022
Leetcode 的每日挑战 — 19/09/2022
问题 — 在系统中查找重复文件
给定一个列表 路径
目录信息,包括目录路径,以及该目录下所有包含内容的文件,返回 文件系统中所有重复文件的路径 .您可以返回答案 任何订单 .
一组重复文件由至少两个具有相同内容的文件组成。
输入列表中的单个目录信息字符串具有以下格式:
“根/d1/d2/.../dm f1.txt(f1_content) f2.txt(f2_content) ... fn.txt(fn_content)”
这意味着有 n
文件 (f1.txt, f2.txt ... fn.txt)
有内容 (f1_content, f2_content ... fn_content)
分别在目录“ 根/d1/d2/.../dm"
.注意 n >= 1
和 m >= 0
.如果 米 = 0
,这意味着该目录只是根目录。
输出是一组重复文件路径的列表。对于每个组,它包含具有相同内容的文件的所有文件路径。文件路径是具有以下格式的字符串:
“目录路径/文件名.txt”
解决方案 - 这里
方法是这样的,我们将遍历路径向量,对于路径中的每个路径,我们将提取目录 ** (目录)** 从路径开始到第一个 ' ' (空格字符)出现的名称。
然后我们将提取 ** (文件名)** 在遇到 ' ' (空格字符)到 '(' (左括号)之后,它从索引中出现。
最后,我们将提取 ** (文件内容)** 在遇到 '(' (左括号)到 ')' (右括号)之后,它从索引中出现。
最后,由于我们需要找到重复的文件,即具有相同文件内容的文件,因此我们将插入键值对, ** {文件内容,文件路径}** 进入我们的地图,在哪里 ** file_path = dir + '' + file_name 和 file_content 是关键。**
一旦我们遍历了整个路径数组,我们就可以将结果从我们的地图复制到所需的 ans 向量。
分析 :
空间 - O(n) ,因为我们使用了额外的容器,例如 map 和 ans vector。
时间 - O(n X)* 其中 n = 路径总数,x 是平均路径长度,基本上是 n* x = 总和(路径 [i].length)。
辅助方法——
我希望解决方案有所帮助,快乐编码!!!
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明