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。
相关推荐
古城小栈几秒前
Python 的主流Ai框架为什么优先适配 Linux 系统?
linux·人工智能·python
爱学习的程序媛11 分钟前
DevOps 深度解析:从文化理念到落地实践
运维·devops
snow@li15 分钟前
服务器:配置中心 Nacos / Apollo 详解
运维·服务器
SEO_juper22 分钟前
不同国家服务器、域名选择,提升本地谷歌抓取优先级
运维·服务器·seo·外贸·geo·独立站·跨境电商独立站
DeboPXK24 分钟前
NSK VH25EM 高防尘法兰型导轨技术手册
服务器·网络·数据库·经验分享·规格说明书
浮云中的神马-潘帅25 分钟前
魔兽世界自动化打地鼠方案
运维·自动化
鼎讯信通41 分钟前
1024J冲击能量+三种放电模式:DLG-1高压发生器覆盖电缆故障全场景
运维·能源·信息与通信
图灵追慕者42 分钟前
Nginx安裝以及配置顯示本地服務器文件夾
运维·nginx
超级赛博搬砖工44 分钟前
SEO代理解析:成功搜索引擎抓取你需要了解的事项
大数据·运维·服务器·网络
换个昵称都难1 小时前
webrtc peerconnection_server 模块介绍
运维·服务器·webrtc