1. 程式人生 > >LeetCode---71. Simplify Path

LeetCode---71. Simplify Path

LeetCode—71. Simplify Path

題目

思路及解法

分隔符"/“之間的字元可以分為三種情況,根據這三種情況我們使用棧實現操作: 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;
    }
}