421 · 简化路径

步骤 1:理解题意

Unix 绝对路径按 / 切分后得到若干 token:

  • 空串 """." → 直接忽略
  • ".." → 返回上一级(弹出栈顶,若栈空则不动)
  • 其他合法目录名 → 压栈
    最后再把栈中目录用 / 拼起来,最前面补一个 / 即为简化结果。
    边界:空栈时返回 "/"

步骤 2:写出暴力/朴素解法

直接 split("/") 后 for-loop 处理,用列表模拟栈,最后再 join,代码较长但思路直观。

步骤 3:寻找冗余与优化点

  • 不必正则或多次字符串拼接,用 Deque<String> 一次入栈出栈即可。
  • 注意连续 / 产生的空串 token。
  • 时间 O(n),额外空间 O(n)(栈大小)。

步骤 4:给出最优"快刷"版本

java 复制代码
public String simplifyPath(String path) {
    Deque<String> stk = new ArrayDeque<>();
    // 按 / 切分
    for (String tok : path.split("/")) {
        if (tok.isEmpty() || tok.equals(".")) continue;
        if (tok.equals("..")) {
            if (!stk.isEmpty()) stk.pollLast();
        } else {
            stk.offerLast(tok);
        }
    }
    return "/" + String.join("/", stk);
}
  • 时间:O(n)
  • 空间:O(n)
  • 可直接 copy 通过 LintCode 421。
相关推荐
Yoyo25年秋招冲冲冲10 分钟前
【亲测可用】ubuntu系统下安装Openclaw+配置飞书
linux·ubuntu·ai·飞书·openclaw
你好,帅哥28 分钟前
openssl ,msys2 ,交叉编译
linux·运维·服务器
计算机安禾38 分钟前
【Linux从入门到精通】第36篇:DNS服务探秘——自己搭建一个内网DNS
linux·运维·servlet
2023自学中1 小时前
make clean 与 make distclean
linux·嵌入式
BenD-_-1 小时前
CVE-2026-31431 Copy Fail:Linux 内核本地提权漏洞风险与缓解
linux·网络·安全
Web极客码1 小时前
2026年Linux VPS安全加固清单:SSH、防火墙与审计就绪配置
运维·服务器·数据库
无敌的黑星星1 小时前
Java8 CompletableFuture 实战指南
linux·前端·python
星恒讯工业路由器2 小时前
配网自动化多网融合应用解决方案
运维·自动化
前端技术2 小时前
03_网络层与IP编址:理解网络寻址的核心逻辑
服务器·网络·php
智慧物业老杨2 小时前
智慧物业收费系统的数智化落地实践:从人工硬扛到自动化闭环
运维·自动化