想要精通算法和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;
}
相关推荐
2601_9657984715 分钟前
Salient Theme Setup Guide for Fast Creative WordPress Sites
数据库·web3·php·wordpress
wen_zhufeng16 分钟前
IndexTTS 2.5 技术报告
人工智能·算法·机器学习
@Mike@1 小时前
09-数据库学习笔记(数据库索引与过滤器)
数据库·笔记
大熊背1 小时前
树莓派相机自动白平衡详解(四)
算法·树莓派·白平衡·isppipeline
一米阳光86611 小时前
软考(中级)软件设计师核心笔记(9)算法——背包问题
笔记·算法·职场发展·软考·软件设计师·中级职称
晚风醉蝶1 小时前
1-11-奇偶排序-OddEvenSort
java·数据结构·算法
旖旎夜光1 小时前
LeetCode 852:山脉数组的峰顶索引(二分查找) —— 题解
数据结构·c++·算法·leetcode·二分查找
程序员夏洛2 小时前
MySQL 中 count(*)、count(1) 和 count(字段名) 有什么区别?
数据库·mysql
Wang's Blog2 小时前
PostgreSQL笔记34:索引优化策略全景解析——从B-tree到HOT的核心原理与实践
数据库·笔记·postgresql
l1258653 小时前
# RAG向量数据库优化实战:HNSW索引调参与生产级性能设计
数据库·python·mysql·langchain