您的位置:首页 > 其它

71. Simplify Path

2016-03-11 05:30 295 查看
主要是用一个stack记录,如果碰到的是“..”,那么如果堆栈不为空,弹出堆栈里面的前一个

如果是“.”,那么什么都不做

public String simplifyPath1(String path) {
if(path == null || path.length() == 0) {
return "";
}
StringBuilder sb = new StringBuilder();
Stack<String> stack = new Stack<String>();
int i = 0;
while(i < path.length()) {
StringBuilder temp = new StringBuilder();
int index = i;
while(i < path.length() && path.charAt(i) != '/') {
temp.append(path.charAt(i));
i++;
}
if(index != i) {
String str = temp.toString();
if(str.equals("..")) {
if(!stack.isEmpty()) {
stack.pop();
}
} else if(!str.equals(".")) {
stack.push(str);
}
}
i++;
}
int size = stack.size();
for(int j = 0; j < size; j++) {
sb.insert(0,stack.pop());
sb.insert(0,"/");
}
return (sb.length() == 0)? "/":sb.toString();
}


bug记录

第30,31行是insert,不是append,因为stack是倒序的
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: