数据结构与算法之栈: LeetCode 71. 简化路径 (Ts版)
简化路径
- https://leetcode.cn/problems/simplify-path/description/
描述
-
给你一个字符串 path ,表示指向某一文件或目录的 Unix 风格 绝对路径 (以 ‘/’ 开头),请你将其转化为 更加简洁的规范路径
-
在 Unix 风格的文件系统中规则如下
- 一个点 ‘.’ 表示当前目录本身
- 此外,两个点 ‘…’ 表示将目录切换到上一级(指向父目录)
- 任意多个连续的斜杠(即,‘//’ 或 ‘///’)都被视为单个斜杠 ‘/’
- 任何其他格式的点(例如,‘…’ 或 ‘…’)均被视为有效的文件/目录名称
- 返回的 简化路径 必须遵循下述格式:
- 始终以斜杠 ‘/’ 开头
- 两个目录名之间必须只有一个斜杠 ‘/’
- 最后一个目录名(如果存在)不能 以 ‘/’ 结尾
- 此外,路径仅包含从根目录到目标文件或目录的路径上的目录(即,不含 ‘.’ 或 ‘…’)
-
返回简化后得到的 规范路径
示例 1
输入:path = "/home/"
输出:"/home"
解释:应删除尾随斜杠
示例 2
输入:path = "/home//foo/"
输出:"/home/foo"
解释:多个连续的斜杠被单个斜杠替换。
示例 3
输入:path = "/home/user/Documents/../Pictures"
输出:"/home/user/Pictures"
解释:两个点 “…” 表示上一级目录(父目录)。
示例 4
输入:path = "/../"
输出:"/"
解释:不可能从根目录上升一级目录。
示例 5
输入:path = "/.../a/../b/c/../d/./"
输出:"/.../b/d"
解释:“…” 在这个问题中是一个合法的目录名。
提示
- 1 <= path.length <= 3000
- path 由英文字母,数字,‘.’,‘/’ 或 ‘_’ 组成
- path 是一个有效的 Unix 风格绝对路径
Typescript 版算法实现
1 ) 方案1:模拟栈
function simplifyPath(path: string): string {const stk = [];for (const s of path.split('/')) {if (!s || s === '.') {continue;}if (s !== '..') {stk.push(s);} else if (stk.length > 0) {stk.pop();}}return '/' + stk.join('/');
};
2 ) 方案2:栈
function simplifyPath(path: string): string {const names = path.split("/");const stack = [];for (const name of names) {if (name === "..") {stack.length && stack.pop()} else if (name.length && name !== ".") {stack.push(name);}}return "/" + stack.join("/");
};
相关文章:
数据结构与算法之栈: LeetCode 71. 简化路径 (Ts版)
简化路径 https://leetcode.cn/problems/simplify-path/description/ 描述 给你一个字符串 path ,表示指向某一文件或目录的 Unix 风格 绝对路径 (以 ‘/’ 开头),请你将其转化为 更加简洁的规范路径 在 Unix 风格的文件系统中…...
STM32-笔记40-BKP(备份寄存器)
一、什么是BKP(备份寄存器)? 备份寄存器是42个16位的寄存器,可用来存储84个字节的用户应用程序数据。他们处在备份域里,当VDD电源被切断,他们仍然由VBAT维持供电。当系统在待机模式下被唤醒,或…...
NAS中不同RAID级别特点与适用场景
1. RAID 0(条带化) 硬盘数量:至少2块。硬盘要求:硬盘容量可以不同,但总容量以最小硬盘为准(例如:1TB 2TB 2TB,其中1TB会被浪费)。优点: 读写性能显著提升&…...
node.js的进程保活
nodejs的进程保活其实用PM2应该更好用些,不过由于原理其实并不复杂,我们可以自己手写一个服务来干这个工作。 假设我们有一个服务,可以这样来定义下它的相关信息: const svcs[ {"sid":"apl","name"…...
meta name=“viewport“ content=“width=device-width, initial-scale=1.0“
meta name“viewport” content“widthdevice-width, initial-scale1.0” 这段代码在网页设计中扮演着非常重要的角色,尤其是在响应式设计中。下面是对这段代码的详细解释及其在响应式设计中的作用: 1. 代码含义 html Copy Code meta 标签是 HTML 中用…...
【vue3】 defineExpose 的使用
以下是 Vue3 中defineExpose的使用方法: 基本概念 defineExpose是 Vue3 中的一个工具函数,是仅能在<script setup>中使用的函数,用于显式暴露组件内部的属性或方法给父组件使用2。在 Vue3 的<script setup>中,组件的…...
思维转换:突破思维桎梏,创造更高效的工作与生活
在现代职场和生活中,我们经常面临着各种挑战和问题,有时候虽然付出了很多努力,但依然难以找到更有效的解决方案。这时,或许我们需要的不是更多的努力,而是一次“思维转换”。这一概念看似简单,但它背后却蕴…...
OpenCV相机标定与3D重建(55)通用解决 PnP 问题函数solvePnPGeneric()的使用
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 根据3D-2D点对应关系找到物体的姿态。 cv::solvePnPGeneric 是 OpenCV 中一个更为通用的函数,用于解决 PnP 问题。它能够返回多个可能…...
vue3学习日记5 - 项目起步
最近发现职场前端用的框架大多为vue,所以最近也跟着黑马程序员vue3的课程进行学习,以下是我的学习记录 视频网址: Day2-11.项目起步-静态资源引入和ErrorLen安装_哔哩哔哩_bilibili 学习日记: vue3学习日记1 - 环境搭建-CSDN博…...
java导出pdf文件
java导出pdf,前端下载 1、制作pdf模板2、获取pdf导出中文需要的文件3、实现4、前端发起请求并生成下载链接 使用注意点 因为原来制作的pdf表单内容过于复杂,下面代码只包含前两行的操作。 本次操作需要前端向后端发起请求,后端返回数据给前端…...
【MySQL学习笔记】MySQL视图View
视图View 1、视图的基础语法2、检查选项3、视图的更新4、视图的作用 视图(View)是一种虚拟存在的表。视图中的数据并不在数据库中实际存在,行和列数据来自定义视图的查询中使用的表,并且是在使用视图时动态生成的。 通俗的讲&…...
从玩具到工业控制--51单片机的跨界传奇【2】
咱们在上一篇博客里面讲解了什么是单片机《单片机入门》,让大家对单片机有了初步的了解。我们今天继续讲解一些有关单片机的知识,顺便也讲解一下我们单片机用到的C语言知识。如果你对C语言还不太了解的话,可以看看博主的C语言专栏哟ÿ…...
【Redis】初识Redis
目录 Redis简介 Redis在内存中存储数据 Redis数据库中的应用 Redis缓存中的应用 Redis消息中间件 尾言 Redis简介 如下是Redis官网中,对Redis的一段描述 在这段描述中,我们提取如下关键要点: Redis主要用于在内存中存储数据Redis可…...
docker虚拟机平台未启用问题
在终端中输入如下代码,重启电脑即可 Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform 对于Docker Desktop - Unexpected WSL error问题 参考链接 解决WSL2与docker冲突问题...
《零基础Go语言算法实战》【题目 2-22】Go 调度器优先调度问题
《零基础Go语言算法实战》 【题目 2-22】Go 调度器优先调度问题 下面代码的输出是什么?请说明原因。 package main import ( "fmt" "runtime" "sync" ) func main() { runtime.GOMAXPROCS(1) wg : sync.WaitGroup{} wg.Add(10)…...
关于使用FastGPT 摸索的QA
近期在通过fastGPT,创建一些基于特定业务场景的、相对复杂的Agent智能体应用。 工作流在AI模型的基础上,可以定义业务逻辑,满足输出对话之外的需求。 在最近3个月来的摸索和实践中,一些基于经验的小问题点(自己也常常…...
关于H5复制ios没有效果
问题场景:今天遇到这样一个问题,需要从后端接口获取到的值进行复制,且不能提现调用获取值,因为是一个数据列表,每个列表元素需要当场点击调用接口获取值进行复制,本来以为很简单的一个需求,当做…...
【STM32-学习笔记-3-】TIM定时器
文章目录 TIM定时器Ⅰ、TIM定时器函数Ⅱ、TIM_TimeBaseInitTypeDef结构体参数①、TIM_ClockDivision②、TIM_CounterMode③、TIM_Period④、TIM_Prescaler⑤、TIM_RepetitionCounter Ⅱ、定时器配置Ⅲ、定时器外部中断NVIC配置 TIM定时器 Ⅰ、TIM定时器函数 // 将定时器寄存器…...
EMS专题 | 守护数据安全:数据中心和服务器机房环境温湿度监测
您需要服务器机房温度监测解决方案吗? 服务器机房是企业中用于存储、管理和维护服务器及其相关组件的设施。服务器机房通常位于数据中心内,是一个专门设计的物理环境,旨在确保服务器的稳定运行和数据的安全性。服务器机房主要起到存储和管理数…...
Vue JavaScript 小写数字金额转换成大写汉字(附编程思路)
一、编程思路(本案例只考虑9999万亿以内的数字转换,相信这个金额对于人民币来说已经足够庞大了,超过此数值的金额不保证转换汉字的准确性,且最多精确到小数点后四位): 1、将示例(不管是…...
基于算法竞赛的c++编程(28)结构体的进阶应用
结构体的嵌套与复杂数据组织 在C中,结构体可以嵌套使用,形成更复杂的数据结构。例如,可以通过嵌套结构体描述多层级数据关系: struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...
《Playwright:微软的自动化测试工具详解》
Playwright 简介:声明内容来自网络,将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具,支持 Chrome、Firefox、Safari 等主流浏览器,提供多语言 API(Python、JavaScript、Java、.NET)。它的特点包括&a…...
【项目实战】通过多模态+LangGraph实现PPT生成助手
PPT自动生成系统 基于LangGraph的PPT自动生成系统,可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析:自动解析Markdown文档结构PPT模板分析:分析PPT模板的布局和风格智能布局决策:匹配内容与合适的PPT布局自动…...
苍穹外卖--缓存菜品
1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得,如果用户端访问量比较大,数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据,减少数据库查询操作。 缓存逻辑分析: ①每个分类下的菜品保持一份缓存数据…...
汇编常见指令
汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX(不访问内存)XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...
QT: `long long` 类型转换为 `QString` 2025.6.5
在 Qt 中,将 long long 类型转换为 QString 可以通过以下两种常用方法实现: 方法 1:使用 QString::number() 直接调用 QString 的静态方法 number(),将数值转换为字符串: long long value 1234567890123456789LL; …...
OpenLayers 分屏对比(地图联动)
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能,和卷帘图层不一样的是,分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...
【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统
目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索(基于物理空间 广播范围)2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...
return this;返回的是谁
一个审批系统的示例来演示责任链模式的实现。假设公司需要处理不同金额的采购申请,不同级别的经理有不同的审批权限: // 抽象处理者:审批者 abstract class Approver {protected Approver successor; // 下一个处理者// 设置下一个处理者pub…...
人工智能(大型语言模型 LLMs)对不同学科的影响以及由此产生的新学习方式
今天是关于AI如何在教学中增强学生的学习体验,我把重要信息标红了。人文学科的价值被低估了 ⬇️ 转型与必要性 人工智能正在深刻地改变教育,这并非炒作,而是已经发生的巨大变革。教育机构和教育者不能忽视它,试图简单地禁止学生使…...
