欢迎光临
我们一直在努力

Kimi LeetCode 71. 简化路径 Java实现

LeetCode 71. 简化路径,经典栈应用题。

思路

  • 按 / 分割路径字符串
  • 用栈处理每个部分:
    • 空字符串或 . → 忽略
    • .. → 栈非空则弹出(返回上一级)
    • 其他 → 入栈
  • 栈中剩余元素用 / 连接,前面补 /
  • Java 实现

    class Solution {
    public String simplifyPath(String path) {
    Deque<String> stack = new ArrayDeque<>();

    // 按 / 分割
    for (String part : path.split("/")) {
    if (part.isEmpty() || ".".equals(part)) {
    // 空字符串(多个/)或当前目录,忽略
    continue;
    }
    if ("..".equals(part)) {
    // 返回上一级,栈非空则弹出
    if (!stack.isEmpty()) {
    stack.pollLast();
    }
    } else {
    // 有效目录名,入栈
    stack.offerLast(part);
    }
    }

    // 拼接结果
    StringBuilder sb = new StringBuilder();
    for (String dir : stack) {
    sb.append("/").append(dir);
    }

    return sb.length() == 0 ? "/" : sb.toString();
    }
    }

    关键点

    情况处理
    多个 / split("/") 产生空字符串,直接忽略
    . 当前目录,忽略
    .. 栈非空则 pollLast(),模拟返回上级
    普通目录名 offerLast() 入栈
    根目录 栈为空时返回 "/"

    复杂度

    • 时间复杂度:O(n),n 为路径长度
    • 空间复杂度:O(n),栈的空间
    • 在这里插入图片描述
    赞(0)
    未经允许不得转载:171主机测评 » Kimi LeetCode 71. 简化路径 Java实现
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址