想要精通算法和SQL的成长之路 - 简化路径

想要精通算法和SQL的成长之路 - 简化路径

  • 前言
  • [一. 简化路径](#一. 简化路径)

前言

想要精通算法和SQL的成长之路 - 系列导航

一. 简化路径

原题连接

思路如下:

  1. 我们根据 "/" 去拆分字符串,得到每个子目录。这里拿到的子目录可能是空字符串,需要注意一下。
  2. 我们遍历这个目录,用一个双向队列存储合法的子目录。
  3. 如果遇到的子目录是 ". ." ,说明是向上层目录前进,我们从移除队尾元素。
  4. 如果遇到的子目录是 ".",咱啥也不用管。
  5. 剩余的子目录都是有效路径,我们往队尾塞。
  6. 最后我们再次遍历双向队列,从队首开始取,拼接字符串得到最终的简化路径。
java 复制代码
public String simplifyPath(String path) {
    LinkedList<String> queue = new LinkedList<>();
    for (String item : path.split("/")) {
        if (item.equals("..")) {
            // 队列必须非空,我们才能移除
            if (!queue.isEmpty()) {
                queue.pollLast();
            }
        } else if (!".".equals(item) && !item.isEmpty()) {// 这里注意一下,空元素以及 "." 我们都不用管
            queue.addLast(item);
        }
    }
    StringBuilder res = new StringBuilder();
    // 从队首元素开始取元素,拼接字符
    while (!queue.isEmpty()) {
        res.append("/" + queue.pollFirst());
    }
    String rr = res.toString();
    // 最后再判空一下
    return rr.isEmpty() ? "/" : rr;
}
相关推荐
升鲜宝供应链及收银系统源代码服务12 分钟前
Java Spring Boot 商业版 升鲜宝供应链管理系统--商品模块表与字段分析(商品管理页面业务逻辑与数据表关系分析)
数据库·生鲜配送系统排名·生鲜配送系统架构设计·b2b订货商城解决方案·生鲜配送系统源代码出售·生鲜配送系统设计源代码
灵晔君25 分钟前
【MySQL】库的操作
数据库·mysql
hahaha60161 小时前
数字图像时域滤波或者3D降噪算法FPGA实现
算法·计算机视觉·fpga开发
陈年老古董1 小时前
Spark 3.1.3 集群搭建 + Spark-SQL 整合 Hive 记录
hive·sql·spark
YSL0701241 小时前
一文通关-----树和二叉树
数据结构·算法
青少儿编程课堂1 小时前
蓝桥杯青少组图形化+信息素养+电子学会Scratch考级:校园口算闯关解析
c++·python·算法·bfs·信息学竞赛
2603_969694851 小时前
【MySQL学习笔记】DQL(基础查询/条件/聚合/分组/排序/分页)与 DCL(用户权限)全解析
数据库·笔记·学习·mysql·学习方法
computersciencer1 小时前
应用贝叶斯公式:迟到了,那坐的是哪种交通工具呢?
算法·机器学习·概率论
若亦_1 小时前
排序>>交换排序
java·数据结构·算法
Paper数据分析-经管学术1 小时前
1985-2025年地级市绿色发明专利被引量
数据库