71. Simplify Path
一、题目
1、审题
2、分析
给一个Unix 的目录结构的字符串表示,将其简化为最简单的目录格式。
.. :代表上一级目录;
///:多个 / 相连时只要保留一个;
.: 可以被忽略;
二、解答
1、思路:
将字符串以 '/' 字符进行分割,将分割的有意义目录结构进行入栈。最终出栈构成简化的目录结构。
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 sb = ""; for(String dir: stack) // 拼接 sb = "/" + dir + sb; return sb.isEmpty() ? "/" : sb; } }