Deque的相关函数


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

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

class Solution {
    public String simplifyPath(String path) {
        String[] names = path.split("/");
        Deque 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;
    }
}