Deque的相关函数

https://www.cnblogs.com/SupremeBoy/p/13653525.html

例题:简化路径(使用双端队列)

/**
 * 使用Deque维护当前的目录名
 * '/'分割后会存在以下情况:
 *  1、空字符串
 *  2、'.'
 *  3、'..
 *  4、目录名
 */

class Solution {
    public String simplifyPath(String path) {
        String[] names = path.split("/");
        Deque<String> deq = new LinkedList<>();
        
        for (String name: names) {
            if ("".equals(name) || ".".equals(name)) continue;
            else if ("..".equals(name)) {   // 跳回上一级目录
                if (!deq.isEmpty()) deq.pollLast();
            } else {
                deq.offerLast(name);
            }
        }

        String ans = "";
        if (deq.isEmpty()) ans += "/";
        else {
            while (!deq.isEmpty()) {
                ans += "/";
                ans += deq.pollFirst();
            }
        }

        return ans;
    }
}

 

posted @ 2021-12-25 12:14  Peterxiazhen  阅读(46)  评论(0编辑  收藏  举报