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 版权协议,转载请附上原文出处链接和本声明

本文链接:https://www.qanswer.top/38060/11582011

posted @ 2022-09-20 11:12  哈哈哈来了啊啊啊  阅读(12)  评论(0编辑  收藏  举报