题目原址
https://leetcode.com/problems/find-duplicate-file-in-system/description/
题目描述
给定一个String类型的数组,数组中包含文件的根目录和文件名称,文件名称后面包含的是文件的内容,现在要求将内容相同的文件目录放在一个List中,将多个包含不同内容的List放入一个List<List<>>
中返回。
AC代码
class Solution {
public List<List<String>> findDuplicate(String[] paths) {
List<List<String>> list = new ArrayList<>();
//String用来存储文件的内容,将内容相同的目录存在在相同的键下
Map<String, List<String>> map = new HashMap<>();
//遍历paths
for(String s: paths) {
//files用来存储按照空格分割的字符串,其中files[0]存储的是文件的根目录,files[1]存储的是文件名称和文件内容
String[] files = s.split(" ");
//root用来存储文件根目录
String root = files[0];
//对每个根目录进行遍历
for(int i = 1; i < files.length; i++) {
//以"()"来分割每个字符串的文件内容
String[] content = files[i].split("[()]");
ArrayList<String> newContent = (ArrayList<String>) map.getOrDefault(content[1], new ArrayList<String>());
newContent.add(root + "/" + content[0]);
map.put(content[1], newContent);
}
}
for(List<String> s: map.values()) {
if(s.size() > 1) {
list.add(s);
}
}
return list;
}
}
感谢
https://blog.csdn.net/grape875499765/article/details/73018312