栈与队列中等1 种解法

#71简化路径

把 Unix 风格绝对路径转换为规范路径。

#字符串#

解题主线

01

按斜杠切分后,普通目录入栈,.. 弹出上级,空段与 . 忽略。

解法 1目录栈

扫描路径段并维护规范目录序列,最后从栈底到栈顶用斜杠连接。

时间复杂度

O(n)

空间复杂度

O(n)

71. 简化路径 · 目录栈
import java.util.ArrayDeque;
import java.util.Deque;

final class Solution {
    public String simplifyPath(String path) {
        Deque<String> directories = new ArrayDeque<>();
        for (String part : path.split("/")) {
            if (part.isEmpty() || part.equals(".")) continue;
            if (part.equals("..")) {
                if (!directories.isEmpty()) directories.removeLast();
            } else {
                directories.addLast(part);
            }
        }
        if (directories.isEmpty()) return "/";
        return "/" + String.join("/", directories);
    }
}

扫描路径段并维护规范目录序列,最后从栈底到栈顶用斜杠连接。

边界与易错点

  • 根目录上的 .. 不应继续向上,也不应作为普通目录入栈。
  • 名称如 ... 是普通目录,只有恰好为 . 或 .. 才有特殊含义。
  • ArrayDeque 比遗留 Stack 更适合作为栈。
整理来源

由旧仓库源码复核、去重并整理;展示代码已按 Java 21 语义修正明显问题。

medium/Q071_simplifyPath.java