weekly contest 35的第三题,感觉就是普通的String
操作呀。。
值得注意的是for (int i = res.size() -1 ; i >= 0 ; i --){
这种remove操作。
先贴一下我的。
public class Solution {
public List<List<String>> findDuplicate(String[] paths) {
Map<String, List<String>> map = new HashMap<>();
for (int i = 0; i < paths.length; i++) {
String s = paths[i];
String files[] = s.split(" ");
for (int j = 1; j < files.length; j++) {
String file = files[j];
int leftEmbraceIndex = 0;
for (int k = 3; k < file.length(); k++) {
if (file.charAt(k) == '(') {
leftEmbraceIndex = k;
break;
}
}
String key = file.substring(leftEmbraceIndex, file.length());
String dir = files[0] + "/" + file.substring(0, leftEmbraceIndex);
List<String> ss = map.getOrDefault(key, new ArrayList<String>());
ss.add(dir);
map.put(key , ss);
}
}
List<List<String>> res = new ArrayList<>();
res.addAll(map.values());
for (int i = res.size() -1 ; i >= 0 ; i --){
if (res.get(i).size() == 1){
res.remove(i);
}
}
return res;
}
}