在系统中查找重复文件
给定一个目录信息列表,包括目录路径,以及该目录中的所有包含内容的文件,您需要找到文件系统中的所有重复文件组的路径。一组重复的文件至少包括二个具有完全相同内容的文件。
输入列表中的单个目录信息字符串的格式如下:
“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);}
}
在系统中查找重复文件相关推荐
- Java实现 LeetCode 609 在系统中查找重复文件(阅读理解+暴力大法)
609. 在系统中查找重复文件 给定一个目录信息列表,包括目录路径,以及该目录中的所有包含内容的文件,您需要找到文件系统中的所有重复文件组的路径.一组重复的文件至少包括二个具有完全相同内容的文件. 输 ...
- LeetCode 609. 在系统中查找重复文件(哈希)
1. 题目 给定一个目录信息列表,包括目录路径,以及该目录中的所有包含内容的文件,您需要找到文件系统中的所有重复文件组的路径. 一组重复的文件至少包括二个具有完全相同内容的文件. 输入列表中的单个目录 ...
- 157、在系统中查找重复文件
题目描述: 给定一个目录信息列表,包括目录路径,以及该目录中的所有包含内容的文件,您需要找到文件系统中的所有重复文件组的路径.一组重复的文件至少包括二个具有完全相同内容的文件. 输入列表中的单个目录信 ...
- 在linux中查找重复的文件夹,如何在Linux上找出并删除重复的文件:FSlint
大家好,今天我们会学习如何在Linux PC或者服务器上找出和删除重复文件.这里有一款工具你可以工具自己的需要使用. 无论你是否正在使用Linux桌面或者服务器,有一些很好的工具能够帮你扫描系统中的重 ...
- linux查找最近访问的文件,教您在Linux系统中查找最近修改的文件/文件夹
如果您使用Linux系统进行日常操作,则主目录文件将随时间急剧增加.如果您有成千上万个文件,很可能不记得最近更改的文件名,本文将教您在Linux系统中查找最近修改的文件/文件夹.另外,如果要检查出于任 ...
- linux 查找只读文件夹,Linux系统中查找命令find的使用方法(二)
今天达内Linux培训小编要继续跟大家分享关于Linux系统中中查找命令find的使用方法的文章.在上文中小编提到,Linux查找命令是Linux系统中很重要也是很常用的命令之一.Linux的查找命令 ...
- php检测txt中重复数据,Python实现检测文件的MD5值来查找重复文件案例
平时学生交上机作业的时候经常有人相互复制,直接改文件名了事,为了能够简单的检测这种作弊行为,想到了检测文件的MD5值,虽然对于抄袭来说作用不大,但是聊胜于无,以后可以做一个复杂点的. # coding ...
- 利用 Linux 查找重复文件
方法一:使用Find命令 本部分算是对find强大功能的扩展使用方法说明.在find的基础上,我们可与(如xargs命令)等其它基本Linux命令相结合,即能创造出无限的命令行功能,比如:可以快速查找 ...
- 硬盘快满了,怎么办?查找重复文件
硬盘快满了,怎么办?查找重复文件,绿色版 链接:https://pan.baidu.com/s/1nbhRhninawNLK5CHZfanWA 提取码:yu37 序列号 TDFP-XWAL-EPNX- ...
最新文章
- Maya初学者完整的3D动画大师班视频教程
- 看过的bootstrap书籍(附下载地址)
- electron 托盘图标闪烁_从零到一,用 Electron 开发桌面效率工具
- 锁屏界面提示某些设置已隐藏_iOS 13隐藏手电筒和相机快捷图标
- python画人脸关键点
- 开关设备对于数据中心正常运行时间很重要!
- 《Thinking in java》 读了个开头
- 一起谈.NET技术,NHibernate 3.0.0.Alpha1 发布及新特性介绍
- 易改衣完成 5000 万 A 轮融资,唯品会战略投资
- 基于MATLAB的数字基带通信系统仿真
- 背景的css代码,CSS 背景(示例代码)
- 某多道程序设计系统供用户使用得主存为 100K , 磁带机 2 台, 打印机 1 台。 采用可变分区内存管理, 采用静态方式分配外围设备, 忽略用户作业F O 时间。 现有作业序列如下:
- 苏州微软面试--机器学习自然语言处理
- 图片如何高清修复?高清修复图片的方法
- 网络聊天中的英语简写
- 拼多多代发商如何一件代发自动下单?
- Java程序员的技术进阶成长路线
- 对Slim 框架进行总结 一
- 记录学习 python-机器学习 02
- 中职一年级计算机学情分析,学情分析
热门文章
- word哪个版本好用(图文详解)
- 安卓微信7.0.18内测更新:拍一拍消息可撤回、视频号全新功能(附内测下载)...
- Nvidia显卡电脑安装Ubuntu16.04遇到的问题与解决办法
- 河南联合惩戒失信建设:220家政府机构因失信被整改
- C++ 压缩文件夹(一)
- KingbaseES 数据库软件卸载
- 对比vscode和idea开发前端的优劣
- python用tsne降维_tSNE降维
- minecraft服务器查看玩家硬件配置,开我的世界服务器2W人的看的是CPU还是内存?...
- 用python定时自动发微博_用 Python 自动定时发微博