Skip to content

Commit 99d65bc

Browse files
solves simplify path
1 parent df815e8 commit 99d65bc

File tree

2 files changed

+56
-0
lines changed

2 files changed

+56
-0
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@
6666
| 67 | [Add Binary](https://leetcode.com/problems/add-binary) | [![Java](assets/java.png)](src/AddBinary.java) [![Python](assets/python.png)](python/add_binary.py) | |
6767
| 69 | [Sqrt(x)](https://leetcode.com/problems/sqrtx) | [![Java](assets/java.png)](src/Sqrtx.java) [![Python](assets/python.png)](python/sqrt.py) | |
6868
| 70 | [Climbing Stairs](https://leetcode.com/problems/climbing-stairs) | [![Java](assets/java.png)](src/ClimbingStairs.java) [![Python](assets/python.png)](python/climbing_stairs.py) | |
69+
| 71 | [Simplify Path](https://leetcode.com/problems/simplify-path) | [![Java](assets/java.png)](src/SimplifyPath.java) | |
6970
| 73 | [Set Matrix Zeroes](https://leetcode.com/problems/set-matrix-zeroes) | [![Java](assets/java.png)](src/SetMatrixZeroes.java) | |
7071
| 83 | [Remove Duplicates from Sorted List](https://leetcode.com/problems/remove-duplicates-from-sorted-list) | [![Java](assets/java.png)](src/RemoveDuplicatesFromSortedList.java) [![Python](assets/python.png)](python/remove_duplicates_from_linked_list.py) | |
7172
| 88 | [Merge Sorted Array](https://leetcode.com/problems/merge-sorted-array) | [![Java](assets/java.png)](src/MergeSortedArray.java) [![Python](assets/python.png)](python/merge_sorted_array.py) | |

src/SimplifyPath.java

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
// https://leetcode.com/problems/simplify-path
2+
// T: O(|path|)
3+
// S: O(|path|)
4+
5+
import java.util.LinkedList;
6+
7+
public class SimplifyPath {
8+
private static final char SLASH = '/';
9+
private static final String ROOT = "/";
10+
private static final String GO_ONE_LEVEL_UP = "..";
11+
private static final String STAY_WHERE_YOU_ARE = ".";
12+
13+
public String simplifyPath(String path) {
14+
final LinkedList<StringBuilder> fragments = new LinkedList<>();
15+
StringBuilder current = new StringBuilder();
16+
for (int i = 0 ; i < path.length() ; i++) {
17+
if (path.charAt(i) == SLASH) {
18+
if (!isEmpty(current)) {
19+
addToFragments(current, fragments);
20+
current = new StringBuilder();
21+
}
22+
} else current.append(path.charAt(i));
23+
}
24+
if (!isEmpty(current)) addToFragments(current, fragments);
25+
return toPath(fragments);
26+
}
27+
28+
private String toPath(LinkedList<StringBuilder> fragments) {
29+
if (fragments.isEmpty()) return ROOT;
30+
StringBuilder result = new StringBuilder();
31+
for (StringBuilder fragment : fragments) {
32+
result.append(SLASH).append(fragment);
33+
}
34+
return result.toString();
35+
}
36+
37+
private void removeLast(LinkedList<StringBuilder> fragments) {
38+
if (!fragments.isEmpty()) {
39+
fragments.removeLast();
40+
}
41+
}
42+
43+
private void addToFragments(StringBuilder current, LinkedList<StringBuilder> fragments) {
44+
String currentString = current.toString();
45+
if (GO_ONE_LEVEL_UP.equals(currentString)) {
46+
removeLast(fragments);
47+
} else if (!STAY_WHERE_YOU_ARE.equals(currentString)) {
48+
fragments.add(current);
49+
}
50+
}
51+
52+
private boolean isEmpty(StringBuilder stringBuilder) {
53+
return stringBuilder.length() == 0;
54+
}
55+
}

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy