https://leetcode.cn/problems/simplify-path/
看到..
是返回上一级这样的用法,瞬间就想到了用Stack,当然也可以自己处理,因为我用栈,然后效率并不高。还有一个就是正则,用来消除多个连续/
使用的。
上代码
class Solution {
public String simplifyPath(String path) {
path = path.replaceAll("/+", "/");
Stack<String> stack = new Stack<>();
List<String> list = new ArrayList<>();
String[] split = path.split("/");
for (String s : split) {
if (".".equals(s) || "".equals(s)) {
// 不做任何处理
} else if ("..".equals(s)) {
if(!stack.isEmpty()) {
stack.pop();
}
} else {
stack.add(s);
}
}
while (!stack.isEmpty()) {
list.add(stack.pop());
}
Collections.reverse(list);
return "/" + String.join("/", list);
}
}
可能并没有到中等难度。或者要优化需要中等难度?
网友评论