g0001_0100.s0071_simplify_path.Solution Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of leetcode-in-java Show documentation
Show all versions of leetcode-in-java Show documentation
Java-based LeetCode algorithm problem solutions, regularly updated
package g0001_0100.s0071_simplify_path;
// #Medium #String #Stack #2023_08_11_Time_2_ms_(99.80%)_Space_41.7_MB_(99.37%)
import java.util.ArrayDeque;
import java.util.Deque;
public class Solution {
public String simplifyPath(String path) {
Deque stk = new ArrayDeque<>();
int start = 0;
while (start < path.length()) {
while (start < path.length() && path.charAt(start) == '/') {
start++;
}
int end = start;
while (end < path.length() && path.charAt(end) != '/') {
end++;
}
String s = path.substring(start, end);
if (s.equals("..")) {
if (!stk.isEmpty()) {
stk.pop();
}
} else if (!s.equals(".") && !s.equals("")) {
stk.push(s);
}
start = end + 1;
}
StringBuilder ans = new StringBuilder();
while (!stk.isEmpty()) {
ans.insert(0, stk.pop());
ans.insert(0, "/");
}
return ans.length() > 0 ? ans.toString() : "/";
}
}