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。
相关推荐
问简38 分钟前
虚拟化对比
服务器
航Hang*1 小时前
Windows Server 配置与管理——第3章:文件系统管理
运维·服务器·windows·vmware
lifewange1 小时前
Linux ps 进程查看命令详解
linux·运维·服务器
功德+n2 小时前
Linux下安装与配置Docker完整详细步骤
linux·运维·服务器·开发语言·docker·centos
人工干智能2 小时前
科普:python中你写的模块找不到了——`ModuleNotFoundError`
服务器·python
左手厨刀右手茼蒿2 小时前
Linux 内核中的块设备驱动:从原理到实践
linux·嵌入式·系统内核
杨云龙UP2 小时前
从0到1快速学会Linux操作系统(基础),这一篇就够了!
linux·运维·服务器·学习·ubuntu·centos·ssh
HXQ_晴天2 小时前
Ubuntu 设置中文输入法
linux·运维·ubuntu
Dovis(誓平步青云)2 小时前
《Linux 信号入门:搞懂 “进程通信的紧急电话” 到底怎么用(初篇)》
linux·运维·服务器