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;
    }
}

 

posted @ 2018-09-21 15:30  skillking2  阅读(116)  评论(0编辑  收藏  举报