71 Simplify Path
Given an absolute path for a file (Unix-style), simplify it.
For example,
path="/home/"
, =>"/home"
path="/a/./b/../../c/"
, =>"/c"
Corner Cases:
Did you consider the case where
path=
"/../"
?In this case, you should return
"/"
.
Another corner case is the path might contain multiple slashes
'/'
together, such as"/home//foo/"
.In this case, you should ignore redundant slashes and return
"/home/foo"
.
这题不是特别难,主要是注意corner case怎么跳过。
public String simplifyPath(String path) {
if (path == null || path.isEmpty()) {
return "";
}
String[] parts = path.split("/");
Stack<String> s = new Stack<>();
for (String part : parts) {
if (part.equals(".") || part.isEmpty()) {
continue;
} else if (part.equals("..")) {
if (!s.isEmpty()) {
s.pop();
}
} else {
s.push(part);
}
}
StringBuilder result = new StringBuilder();
while (!s.isEmpty()) {
result.insert(0, s.pop());
result.insert(0, "/");
}
return result.length() == 0 ? "/" : result.toString();
}
Last updated
Was this helpful?