您的位置:首页 > 其它

leetcode解题方案--071--Simplify Path

2017-12-31 00:23 447 查看

题目

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();

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: