LeetCode 71. 简化路径
原题链接
中等
作者:
LangB
,
2020-11-03 12:34:57
,
所有人可见
,
阅读 289
用栈进行模拟
class Solution {
public String simplifyPath(String path) {
String[] strs = path.split("/");
StringBuilder res = new StringBuilder();
Stack<String> stack = new Stack<>();
for (int i = 0; i < strs.length; i++) {
if (strs[i].length() == 0 || strs[i].equals(".")) {
// 如果当前字符串为空,或者等于 ".",则不需要进行任何操作
continue;
}
if (!stack.isEmpty()) {
// 当栈不为空时
// 如果字符串为"..",则要回到上一级目录
// 为其他字符串时,则添加到目录栈中
if (strs[i].equals("..")) {
stack.pop();
} else {
stack.push(strs[i]);
}
} else {
// 当栈为空时
// 如果字符串为"..",由于栈为空,没有上一级目录,则不需要进行任何操作
// 为其他字符串时,则添加到目录栈中
if (!strs[i].equals("..")) {
stack.push(strs[i]);
}
}
}
if (stack.isEmpty()) {
return res.append('/').toString();
}
while (!stack.isEmpty()) {
res.insert(0, stack.pop());
res.insert(0, '/');
}
return res.toString();
}
}