LeetCode—71. Simplify Path
题目
https://leetcode.com/problems/simplify-path/description/
简化文件路径。
思路及解法
分隔符"/“之间的字符可以分为三种情况,根据这三种情况我们使用栈实现操作:
1.如果是”…",应该返回上级菜单,对应出栈
2.如果是".“或者”",保持不变,不对栈进行操作
3.其他情况将字符压栈
这道题可以看看其中的语法实现
代码
class Solution {
public String simplifyPath(String path) {
Deque<String> stack = new LinkedList<>();//双端对列
Set<String> skip = new HashSet<>(Arrays.asList("..",".",""));
for(String dir: path.split("/")){
if(dir.equals("..") && !stack.isEmpty()) stack.pop();
else if(!skip.contains(dir)) stack.push(dir);
}
String result = "";
for(String dir: stack) result = "/"+dir+result;
return result.isEmpty()? "/":result;
}
}