问题
解题
- 暴力遍历每一个文件,然后先保存根目录,然后找到该文件的文件名,组合成绝对路径保存在以文件内容为key的map中。
class Solution {
public List<List<String>> findDuplicate(String[] paths) {
Map<String, List<String>> map = new HashMap();
for(String path : paths){
char[] ch = path.toCharArray();
StringBuffer root = new StringBuffer();
int i = 0;
while(ch[i] != ' '){
root.append(ch[i] + "");
i ++;
}
i += 1;
root.append("/");
while(i != ch.length){
StringBuffer subPath = new StringBuffer(root);
if(ch[i] == ' ') i ++;
while(ch[i] != '('){
subPath.append(ch[i] + "");
i ++;
}
i += 1;
StringBuffer content = new StringBuffer();
while(ch[i] != ')'){
content.append(ch[i] + "");
i ++;
}
i += 1;
String key = content.toString();
if(!map.containsKey(key)){
map.put(key, new ArrayList<String>());
map.get(key).add(subPath.toString());
}else{
map.get(key).add(subPath.toString());
}
}
}
List<List<String>> res = new ArrayList();
for(String str : map.keySet()){
if(map.get(str).size() > 1){
res.add(map.get(str));
}
}
return res;
}
}