问题描述
- 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”.
问题分析
- split
代码实现
class Solution {
public String simplifyPath(String path) {
String[] paths = path.split("/");
LinkedList<String> stack = new LinkedList<>();
for (String s : paths) {
if (s.equals("..")) {
if (!stack.isEmpty()) {
stack.removeLast();
}
}else if (s.equals(".") || s.equals("")) {
continue;
}else {
stack.addLast(s);
}
}
StringBuilder res = new StringBuilder();
if (stack.isEmpty()) {
res.append("/");
return res.toString();
}
while (! stack.isEmpty()) {
res.append("/").append(stack.removeFirst());
}
return res.toString();
}
}