LeetCode第71题 - 简化路径
题目
以 Unix 风格给出一个文件的绝对路径,你需要简化它。或者换句话说,将其转换为规范路径。
在 Unix 风格的文件系统中,一个点(.)表示当前目录本身;此外,两个点 (…) 表示将目录切换到上一级(指向父目录);两者都可以是复杂相对路径的组成部分。
请注意,返回的规范路径必须始终以斜杠 / 开头,并且两个目录名之间必须只有一个斜杠 /。最后一个目录名(如果存在)不能以 / 结尾。此外,规范路径必须是表示绝对路径的最短字符串。
解答
public String simplifyPath(String path) {if (path == null) {return "/";}path = path.trim();if (path.isEmpty()) {return "/";}Stack<String> stack = new Stack<>();String[] fields = path.split("/");for (String field : fields) {field = field.trim();if (field.isEmpty()) {continue;}switch (field) {case ".":break;case "..":if (!stack.isEmpty()) {stack.pop();}break;default:stack.push(field);break;}}StringBuilder sb = new StringBuilder();while (!stack.isEmpty()) {sb.insert(0, stack.pop()).insert(0, "/");}if (sb.length() == 0) {sb.append("/");}return sb.toString();
}
要点
本题比较简单,按照题目的要求,利用JDK提供的Stack和StringBuilder即可实现。
注意事项:
- 异常输入,直接返回
/。 - 去掉输入字符串前、后的空格。
- 空字符串,直接返回
/。 - 使用
/来拆分输入的字符串。 - 针对每一段进行处理。
.,不做处理。..,返回上一层。- 保留。
- 拼接路径。
当前提供的实现,其实有点啰嗦,后续可以改进。
利用File类的方法也可以达成题目的要求,考虑到并没有利用算法的知识来解决问题,因此这里不做演示。
相关文章:
LeetCode第71题 - 简化路径
题目 以 Unix 风格给出一个文件的绝对路径,你需要简化它。或者换句话说,将其转换为规范路径。 在 Unix 风格的文件系统中,一个点(.)表示当前目录本身;此外,两个点 (…) 表…...
VSCode上远程调试代码出现的问题
记录一下: 真的是汗流浃背了,师妹叫帮忙如何在VSCode上远程调试代码,一些自己已经经历过的问题,现在已经忘记了。又在网上一顿搜索,这次记录下吧。。。 出现以下问题: 1. 终端界面总是sh-4.4 $ ÿ…...
【langchain】入门初探实战笔记(Chain, Retrieve, Memory, Agent)
1. 简介 1.1 大语言模型技术栈 大语言模型技术栈由四个主要部分组成: 数据预处理流程(data preprocessing pipeline)嵌入端点(embeddings endpoint )向量存储(vector store)LLM 终端ÿ…...
《数据结构、算法与应用C++语言描述》- 平衡搜索树 -全网唯一完整详细实现插入和删除操作的模板类
平衡搜索树 完整可编译运行代码见:Github::Data-Structures-Algorithms-and-Applications/_34Balanced search tree 概述 本章会讲AVL、红-黑树、分裂树、B-树。 平衡搜索树的应用? AVL 和红-黑树和分裂树适合内部存储的应用。 B-树适合外部存储的…...
网络路由跟踪工具
随着企业网络需求的增长,组织发现监控和管理其网络基础设施变得越来越困难。网络管理员正在转向其他工具和资源,这些工具和资源可以使他们的工作更轻松一些,尤其是在故障排除方面。 目前,网络管理员主要使用简单、免费提供的实用…...
设计模式 七大原则
1.单一职责原则 单一职责原则(SRP:Single responsibility principle)又称单一功能原则 核心:解耦和增强内聚性(高内聚,低耦合)。 描述: 类被修改的几率很大,因此应该专注…...
(1)(1.13) SiK无线电高级配置(一)
文章目录 前言 1 监控链接质量 2 诊断范围问题 3 MAVLink协议说明 前言 本文提供 SiK 遥测无线电(SiK Telemetry Radio)的高级配置信息。它面向"高级用户"和希望更好地了解无线电如何运行的用户。 !Tip 大多数用户只需要 SiK Radio v2 中提供的基本…...
drf知识--10
接口文档 # 后端把接口写好后: 登录接口:/api/v1/login ---> post---name pwd 注册接口 查询所有图书带过滤接口 # 前后端需要做对接,对接第一个东西就是这个接口文档,前端照着接口文档开发 公司3个人ÿ…...
探索 Vue 实例方法的魅力:提升 Vue 开发技能(下)
🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…...
mysql死锁排查
查看正在进行中的事务 SELECT * FROM information_schema.INNODB_TRX;字段解释trx_id唯一事务id号,只读事务和非锁事务是不会创建id的trx_state事务的执行状态,值一般分为:RUNNING, LOCK WAIT, ROLLING BACK, and COMMITTING.trx_started事务…...
若依项目(ruoy-vue)多模块依赖情况简要分析
主pom文件关键点分析 properties标签声明变量信息:版本号、编码类型、java版本spring-boot依赖形式:spring-boot-dependencies、pom、importdependencies中添加本项目内部模块,同时在modules中声明模块packaging打包选择pom设置打包maven-co…...
【普中开发板】基于51单片机的篮球计分器液晶LCD1602显示( proteus仿真+程序+设计报告+讲解视频)
基于普中开发板51单片机的篮球计分器液晶LCD1602显示 1.主要功能:讲解视频:2.仿真3. 程序代码4. 设计报告5. 设计资料内容清单&&下载链接资料下载链接(可点击): 基于51单片机的篮球计分器液晶LCD1602显示 ( pr…...
按照层次遍历结果打印完全二叉树
按照层次遍历结果打印完全二叉树 按照推论结果: l 层首个节点位置 2h-l - 1l 层节点间距:2h-l1 - 1 编码实现 public static<E> void print(BinaryTree<E> tree) {List<List<Node<E>>> levelNodeList levelOrderTraver…...
基于SpringBoot的药店管理系统
文章目录 项目介绍主要功能截图:部分代码展示设计总结项目获取方式🍅 作者主页:超级无敌暴龙战士塔塔开 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 🍅文末获取源码联系🍅 项目介绍 基于SpringBoot的药店管理系统,java项目…...
Java 泛型深入解析
Java 中的泛型是一种强大的编程特性,允许我们编写更加通用和类型安全的代码。本篇博客将深入探讨 Java 泛型的各个方面,包括泛型类、泛型方法、泛型接口以及泛型通配符。 1. 泛型类 首先,让我们看一个简单的泛型类的例子。在下面的代码中&a…...
Apache Doris (六十): Doris - 物化视图
🏡 个人主页:IT贫道_大数据OLAP体系技术栈,Apache Doris,Clickhouse 技术-CSDN博客 🚩 私聊博主:加入大数据技术讨论群聊,获取更多大数据资料。 🔔 博主个人B栈地址:豹哥教你学编程的个人空间-豹哥教你学编程个人主页-哔哩哔哩视频 目录...
【javaweb】tomcat9.0中的HttpServlet
2023年12月28日,周四晚上 目录 什么是HttpServlet tomcat中的HttpServlet由谁产生 什么是HttpServlet 在Tomcat中,HttpServlet 是 Java Servlet API 中的一个抽象类,用于简化基于HTTP协议的Servlet的开发。HttpServlet 扩展了 GenericServ…...
数据结构学习笔记——查找算法中的树形查找(B树、B+树)
目录 前言一、B树(一)B树的概念(二)B树的性质(三)B树的高度(四)B树的查找(五)B树的插入(六)B树的删除 二、B树(一…...
python包chromadb安装失败总结
1,背景: 最近在学习langchain的课程,里面创建自己的知识库的Retrieval模块中,需要用到向量数据库。 所以按照官方的教程(vectorstores),准备使用chroma的向量数据库。图片来源 2,问…...
机器学习(四) -- 模型评估(2)
系列文章目录 机器学习(一) -- 概述 机器学习(二) -- 数据预处理(1-3) 机器学习(三) -- 特征工程(1-2) 机器学习(四) -- 模型评估…...
2025夏季技术实习「抢位战」:3步解锁2500+优质机会(附避坑指南)[特殊字符]
2025夏季技术实习「抢位战」:3步解锁2500优质机会(附避坑指南)🔥 【免费下载链接】Summer2026-Internships 2025年夏季技术实习机会集合! 项目地址: https://gitcode.com/GitHub_Trending/su/Summer2026-Internships…...
腾讯王者荣耀强化学习环境:打造专业AI训练平台的完整指南
腾讯王者荣耀强化学习环境:打造专业AI训练平台的完整指南 【免费下载链接】hok_env Honor of Kings AI Open Environment of Tencent 项目地址: https://gitcode.com/gh_mirrors/ho/hok_env 在人工智能研究领域,游戏环境一直是强化学习算法的理想…...
Opencascade避坑指南:Select()函数7个常见使用误区与调试技巧
Opencascade避坑指南:Select()函数7个常见使用误区与调试技巧 在三维建模和CAD开发领域,Opencascade作为一款强大的开源几何内核,其交互功能一直是开发者关注的焦点。而AIS_InteractiveContext中的Select()函数,作为对象选取的核心…...
GTE模型与Visual Studio智能编程插件的集成
GTE模型与Visual Studio智能编程插件的集成 1. 引言 作为一名每天要写大量代码的程序员,我经常遇到这样的情况:突然想不起来某个API的具体用法,或者需要查找某个功能的实现示例。传统的做法是打开浏览器,在各种文档和论坛中搜索…...
工厂里EtherCAT从站模块坏了别慌!手把手教你用Startup list和CoE-online快速换新(附配置顺序避坑指南)
工厂EtherCAT从站模块更换实战指南:Startup list与CoE-online的高效应用 当生产线上的EtherCAT从站模块突然罢工,设备维护工程师往往面临两难选择:是临时在线修改参数快速恢复生产,还是彻底解决"即插即用"的配置难题&am…...
Linux内核构建系统:Makefile、Kconfig与.config解析
1. Linux内核构建系统核心组件解析1.1 内核构建系统概述Linux内核作为复杂的开源项目,其构建系统由三个关键组件构成:Makefile、Kconfig和.config文件。这三个组件协同工作,构成了内核模块化构建的基础架构。1.1.1 组件类比关系Kconfig&#…...
工业数智化转型路径:JBoltAI 工具与定制化服务实践
当前,我国工业数智化已进入高质量发展、规模化推广的新阶段,成为推动制造业转型升级、构建先进工业体系的核心动力。结合行业发展现状与企业实际需求,JBoltAI推出针对性数智化工具及定制服务,为工业企业转型提供实用支撑。一、工业…...
2026年多模态AI前瞻:Qwen3-VL-2B开源生态发展潜力分析
2026年多模态AI前瞻:Qwen3-VL-2B开源生态发展潜力分析 1. 项目概述与核心价值 Qwen3-VL-2B-Instruct作为新一代开源视觉语言模型,代表了多模态AI技术的重要发展方向。这个模型不仅能够理解文本,更重要的是具备了"看"的能力——它…...
避开Webots 2021b+的材质下载坑:保姆级配置2021a旧版本(附Ubuntu/PyCharm环境)
避开Webots 2021b的材质下载坑:保姆级配置2021a旧版本(附Ubuntu/PyCharm环境) 如果你最近尝试安装Webots最新版本时,遇到了材质无法下载的报错,这篇文章就是为你准备的。作为一个长期使用Webots进行机器人仿真的开发者…...
手把手教你魔改YOLOv8:从CSPPC到SPPELAN的实战调优(新手友好版)
1. 为什么需要魔改YOLOv8? 目标检测是计算机视觉领域最基础也最实用的技术之一,而YOLOv8作为当前最流行的实时检测框架,凭借其出色的速度和精度平衡,已经成为工业界和学术界的首选。但在实际项目中,我们经常会遇到一些…...
