071J. Simplify Path
https://leetcode.com/problems/simplify-path/
这个题主要要解决的痛点就是输入中无用的 "." 和重复的 "/" 以及需要被运算的上一级运算符 ".."
注意 "..." 是可行的,因为可以被作为文件名。
Method: almost Best
class Solution {
public String simplifyPath(String path) {
//首先需要处理的就是重复的 "/",用这个方法就解决了
String[] string = path.split("/");
Stack<String> stack = new Stack<>();
// 其次需要解决的是 ".." 和 "." 和 ""
for(String s : string){
// ".." 会往上退
if( !stack.empty() && s.equals("..") ){
stack.pop();
}
// "." "" 没有用 应当忽略,这里应该记录有用的输入
if( !s.equals(".") && !s.equals("") && !s.equals("..")){
stack.push(s);
}
}
// 此时stack里面是正确的输入顺序。建立新的String就好了
String ans = "";
for(String s : stack){
ans = ans + "/"+ s;
}
// 防止最后结果为空,应当返回/
return ans.equals("") ? "/" : ans;
}
}
Last updated
Was this helpful?