Skip to content

Commit 59b4d90

Browse files
authored
2022-09-19 update: added "Find Duplicate File in System" (#109)
1 parent 460b8b7 commit 59b4d90

File tree

3 files changed

+68
-0
lines changed

3 files changed

+68
-0
lines changed

Diff for: README.md

+1
Original file line numberDiff line numberDiff line change
@@ -540,6 +540,7 @@ Profile on LeetCode: [fartem](https://leetcode.com/fartem/).
540540
| 556. Next Greater Element III | [Link](https://leetcode.com/problems/next-greater-element-iii/) | [Link](./src/main/java/com/smlnskgmail/jaman/leetcodejava/medium/NextGreaterElementIII.java) |
541541
| 560. Subarray Sum Equals K | [Link](https://leetcode.com/problems/subarray-sum-equals-k/) | [Link](./src/main/java/com/smlnskgmail/jaman/leetcodejava/medium/SubarraySumEqualsK.java) |
542542
| 581. Shortest Unsorted Continuous Subarray | [Link](https://leetcode.com/problems/shortest-unsorted-continuous-subarray/) | [Link](./src/main/java/com/smlnskgmail/jaman/leetcodejava/medium/ShortestUnsortedContinuousSubarray.java) |
543+
| 609. Find Duplicate File in System | [Link](https://leetcode.com/problems/find-duplicate-file-in-system/) | [Link](./src/main/java/com/smlnskgmail/jaman/leetcodejava/medium/FindDuplicateFileInSystem.java) |
543544
| 621. Task Scheduler | [Link](https://leetcode.com/problems/task-scheduler/) | [Link](./src/main/java/com/smlnskgmail/jaman/leetcodejava/medium/TaskScheduler.java) |
544545
| 622. Design Circular Queue | [Link](https://leetcode.com/problems/design-circular-queue/) | [Link](./src/main/java/com/smlnskgmail/jaman/leetcodejava/medium/DesignCircularQueue.java) |
545546
| 623. Add One Row to Tree | [Link](https://leetcode.com/problems/add-one-row-to-tree/) | [Link](./src/main/java/com/smlnskgmail/jaman/leetcodejava/medium/AddOneRowToTree.java) |
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package com.smlnskgmail.jaman.leetcodejava.medium;
2+
3+
import java.util.ArrayList;
4+
import java.util.HashMap;
5+
import java.util.List;
6+
import java.util.Map;
7+
8+
// https://leetcode.com/problems/find-duplicate-file-in-system/
9+
class FindDuplicateFileInSystem {
10+
11+
private final String[] input;
12+
13+
FindDuplicateFileInSystem(String[] input) {
14+
this.input = input;
15+
}
16+
17+
public List<List<String>> solution() {
18+
Map<String, List<String>> map = new HashMap<>();
19+
for (String path : input) {
20+
String[] values = path.split(" ");
21+
for (int i = 1; i < values.length; i++) {
22+
String[] name = values[i].split("\\(");
23+
name[1] = name[1].replace(")", "");
24+
List<String> list = map.getOrDefault(name[1], new ArrayList<>());
25+
list.add(values[0] + "/" + name[0]);
26+
map.put(name[1], list);
27+
}
28+
}
29+
List<List<String>> result = new ArrayList<>();
30+
for (String key : map.keySet()) {
31+
if (map.get(key).size() > 1) {
32+
result.add(map.get(key));
33+
}
34+
}
35+
return result;
36+
}
37+
38+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package com.smlnskgmail.jaman.leetcodejava.medium;
2+
3+
import org.junit.Test;
4+
5+
import java.util.List;
6+
7+
import static org.junit.Assert.assertEquals;
8+
9+
public class FindDuplicateFileInSystemTest {
10+
11+
@Test
12+
public void defaultTest() {
13+
assertEquals(
14+
List.of(
15+
List.of("root/a/2.txt", "root/c/d/4.txt", "root/4.txt"),
16+
List.of("root/a/1.txt", "root/c/3.txt")
17+
),
18+
new FindDuplicateFileInSystem(
19+
new String[]{
20+
"root/a 1.txt(abcd) 2.txt(efgh)",
21+
"root/c 3.txt(abcd)",
22+
"root/c/d 4.txt(efgh)",
23+
"root 4.txt(efgh)"
24+
}
25+
).solution()
26+
);
27+
}
28+
29+
}

0 commit comments

Comments
 (0)