题目
Given an absolute path for a file (Unix-style), simplify it.
For example,
path = “/home/”, => “/home”
path = “/a/./b/../../c/”, => “/c”
分析
两个句点为返回。
设计一个栈,如果遇到返回就弹出。
如果遇到一个句点就忽略
然后把栈一一弹出,弹出时要在已有字符串最前面插入。
如果为空,则只加一个/
class Solution {
public static String simplifyPath(String path) {
String [] xx = path.split("/");
Stack<String> stack = new Stack<String>();
for (int i = 0; i<xx.length; i++) {
if (xx[i].length() ==0 || xx[i] .equals(".")) {
continue;
}
if (xx[i].equals("..")) {
if (!stack.empty()) {
stack.pop();
}
} else {
stack.push(xx[i]);
}
}
StringBuffer xxx = new StringBuffer("");
while (!stack.empty()) {
xxx.insert(0, stack.pop());
xxx.insert(0,"/");
}
if (xxx.length() == 0) {
xxx.append("/");
}
return xxx.toString();
}
}