给定一个目录信息列表,包括目录路径,以及该目录中的所有包含内容的文件,您需要找到文件系统中的所有重复文件组的路径。一组重复的文件至少包括二个具有完全相同内容的文件。

输入列表中的单个目录信息字符串的格式如下:

“root/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)在目录 root/d1/d2/…/dm 下。注意:n>=1 且 m>=0。如果 m=0,则表示该目录是根目录。

该输出是重复文件路径组的列表。对于每个组,它包含具有相同内容的文件的所有文件路径。文件路径是具有下列格式的字符串:

“directory_path/file_name.txt”

示例 1:

输入:
[“root/a 1.txt(abcd) 2.txt(efgh)”, “root/c 3.txt(abcd)”, “root/c/d 4.txt(efgh)”, “root 4.txt(efgh)”]
输出:
[[“root/a/2.txt”,“root/c/d/4.txt”,“root/4.txt”],[“root/a/1.txt”,“root/c/3.txt”]]

注:

最终输出不需要顺序。
您可以假设目录名、文件名和文件内容只有字母和数字,并且文件内容的长度在 [1,50] 的范围内。
给定的文件数量在 [1,20000] 个范围内。
您可以假设在同一目录中没有任何文件或目录共享相同的名称。
您可以假设每个给定的目录信息代表一个唯一的目录。目录路径和文件信息用一个空格分隔。

class Solution {public List<List<String>> findDuplicate(String[] paths) {if(paths.length==0){return Arrays.asList();}//创建Map存放文件名和对应的目录Map<String,List<String>> map = new HashMap<>();//遍历集合,取出文件名和目录String[] strs = null;List<String> list = null;String content = "";for(int i=0;i<paths.length;i++){strs = paths[i].split(" ");//通过空格分割字符串for(int j=1;j<strs.length;j++){//取出文件内容content = getContent(strs[j]);if(map.get(content)==null){//map中没放入该内容list = new ArrayList<>();list.add(strs[0]+"/"+strs[j].substring(0,strs[j].length()-content.length()-2));map.put(content,list);}else {list = map.get(content);list.add(strs[0]+"/"+strs[j].substring(0,strs[j].length()-content.length()-2));}}}//取出结果放在结果集中List<List<String>> result = new ArrayList<>();Set<String> keys = map.keySet();for (String key : keys ) {list = map.get(key);if(list.size() > 1){result.add(list);}}return result;}public static String getContent(String fileName){int index = fileName.length()-2;while(fileName.charAt(index)!='('){index -- ;}return fileName.substring(index+1,fileName.length()-1);}
}

在系统中查找重复文件相关推荐

  1. Java实现 LeetCode 609 在系统中查找重复文件(阅读理解+暴力大法)

    609. 在系统中查找重复文件 给定一个目录信息列表,包括目录路径,以及该目录中的所有包含内容的文件,您需要找到文件系统中的所有重复文件组的路径.一组重复的文件至少包括二个具有完全相同内容的文件. 输 ...

  2. LeetCode 609. 在系统中查找重复文件(哈希)

    1. 题目 给定一个目录信息列表,包括目录路径,以及该目录中的所有包含内容的文件,您需要找到文件系统中的所有重复文件组的路径. 一组重复的文件至少包括二个具有完全相同内容的文件. 输入列表中的单个目录 ...

  3. 157、在系统中查找重复文件

    题目描述: 给定一个目录信息列表,包括目录路径,以及该目录中的所有包含内容的文件,您需要找到文件系统中的所有重复文件组的路径.一组重复的文件至少包括二个具有完全相同内容的文件. 输入列表中的单个目录信 ...

  4. 在linux中查找重复的文件夹,如何在Linux上找出并删除重复的文件:FSlint

    大家好,今天我们会学习如何在Linux PC或者服务器上找出和删除重复文件.这里有一款工具你可以工具自己的需要使用. 无论你是否正在使用Linux桌面或者服务器,有一些很好的工具能够帮你扫描系统中的重 ...

  5. linux查找最近访问的文件,教您在Linux系统中查找最近修改的文件/文件夹

    如果您使用Linux系统进行日常操作,则主目录文件将随时间急剧增加.如果您有成千上万个文件,很可能不记得最近更改的文件名,本文将教您在Linux系统中查找最近修改的文件/文件夹.另外,如果要检查出于任 ...

  6. linux 查找只读文件夹,Linux系统中查找命令find的使用方法(二)

    今天达内Linux培训小编要继续跟大家分享关于Linux系统中中查找命令find的使用方法的文章.在上文中小编提到,Linux查找命令是Linux系统中很重要也是很常用的命令之一.Linux的查找命令 ...

  7. php检测txt中重复数据,Python实现检测文件的MD5值来查找重复文件案例

    平时学生交上机作业的时候经常有人相互复制,直接改文件名了事,为了能够简单的检测这种作弊行为,想到了检测文件的MD5值,虽然对于抄袭来说作用不大,但是聊胜于无,以后可以做一个复杂点的. # coding ...

  8. 利用 Linux 查找重复文件

    方法一:使用Find命令 本部分算是对find强大功能的扩展使用方法说明.在find的基础上,我们可与(如xargs命令)等其它基本Linux命令相结合,即能创造出无限的命令行功能,比如:可以快速查找 ...

  9. 硬盘快满了,怎么办?查找重复文件

    硬盘快满了,怎么办?查找重复文件,绿色版 链接:https://pan.baidu.com/s/1nbhRhninawNLK5CHZfanWA 提取码:yu37 序列号 TDFP-XWAL-EPNX- ...

最新文章

  1. Maya初学者完整的3D动画大师班视频教程
  2. 看过的bootstrap书籍(附下载地址)
  3. electron 托盘图标闪烁_从零到一,用 Electron 开发桌面效率工具
  4. 锁屏界面提示某些设置已隐藏_iOS 13隐藏手电筒和相机快捷图标
  5. python画人脸关键点
  6. 开关设备对于数据中心正常运行时间很重要!
  7. 《Thinking in java》 读了个开头
  8. 一起谈.NET技术,NHibernate 3.0.0.Alpha1 发布及新特性介绍
  9. 易改衣完成 5000 万 A 轮融资,唯品会战略投资
  10. 基于MATLAB的数字基带通信系统仿真
  11. 背景的css代码,CSS 背景(示例代码)
  12. 某多道程序设计系统供用户使用得主存为 100K , 磁带机 2 台, 打印机 1 台。 采用可变分区内存管理, 采用静态方式分配外围设备, 忽略用户作业F O 时间。 现有作业序列如下:
  13. 苏州微软面试--机器学习自然语言处理
  14. 图片如何高清修复?高清修复图片的方法
  15. 网络聊天中的英语简写
  16. 拼多多代发商如何一件代发自动下单?
  17. Java程序员的技术进阶成长路线
  18. 对Slim 框架进行总结 一
  19. 记录学习 python-机器学习 02
  20. 中职一年级计算机学情分析,学情分析

热门文章

  1. word哪个版本好用(图文详解)
  2. 安卓微信7.0.18内测更新:拍一拍消息可撤回、视频号全新功能(附内测下载)...
  3. Nvidia显卡电脑安装Ubuntu16.04遇到的问题与解决办法
  4. 河南联合惩戒失信建设:220家政府机构因失信被整改
  5. C++ 压缩文件夹(一)
  6. KingbaseES 数据库软件卸载
  7. 对比vscode和idea开发前端的优劣
  8. python用tsne降维_tSNE降维
  9. minecraft服务器查看玩家硬件配置,开我的世界服务器2W人的看的是CPU还是内存?...
  10. 用python定时自动发微博_用 Python 自动定时发微博