简化路径【栈模拟解法】

保姆级教程:用Python+OpenCV实现相移法与格雷码三维重建(从生成条纹到点云生成) 本文详细介绍了使用Python和OpenCV实现相移法与格雷码三维重建的全流程,从条纹生成到点云计算。通过结构光技术,结合相移法和格雷码,实现高精度的三维重建,适用于无纹理物体表面的密集对应点生成。教程包含环境搭建、条纹生成、相位计算、三维点云重建及常见问题排查,适合计算机视觉开发者和研究人员。 阅读详情

题文:

以 Unix 风格给出一个文件的绝对路径,你需要简化它。或者换句话说,将其转换为规范路径。

在 Unix 风格的文件系统中,一个点(.)表示当前目录本身;此外,两个点 (…)
表示将目录切换到上一级(指向父目录);两者都可以是复杂相对路径的组成部分。更多信息请参阅:Linux / Unix中的绝对路径 vs
相对路径

请注意,返回的规范路径必须始终以斜杠 / 开头,并且两个目录名之间必须只有一个斜杠 /。最后一个目录名(如果存在)不能以 /
结尾。此外,规范路径必须是表示绝对路径的最短字符串。

示例:

示例1:

输入:"/home/"
输出:"/home"
解释:注意,最后一个目录名后面没有斜杠。

示例2:

输入:"/…/"
输出:"/"
解释:从根目录向上一级是不可行的,因为根是你可以到达的最高级。

示例3:

输入:"/home//foo/"
输出:"/home/foo"
解释:在规范路径中,多个连续斜杠需要用一个斜杠替换。

示例4:

输入:"/a/./b/…/…/c/"
输出:"/c"

示例5:

输入:"/a/…/…/b/…/c//.//"
输出:"/c"

示例6:

输入:"/a//b////c/d//././/…"
输出:"/a/b/c"

思路分析

通过对Unix风格的文件系统分析,可以得出本题考查的要素关键:
/.为当前路径;
/..为当前路径的上一级;
/xx为/之前的路径下打开xx;
这让人不禁联想到栈的应用,使用栈来存储当前打开的路径的每一段,当遍历字符串遍历到/.时保持路径不变,当遍历到/..时弹出栈顶路径(前提栈不空),其他的则入栈。剩下的注意点便只有多重/的出现和结尾的/。
至于实现细节,看代码可能比较方便。
本算法时间复杂度为 O ( n ) O(n) O(n).

代码展示

在本代码中,我使用了deque(双向队列),实际上主要用到的功能还是栈的功能,在双向队列中表现为只操作队尾,之所以用到队头的原因是为了方便输出,实际上只使用stack(栈)也是很方便输出的。

string simplifyPath(string path) {
        if(path.empty()) return "";
        deque<string> temp;
        string str,ans; 
        if(path[path.size()-1]!='/') path+="/";
        for(int i=0;i<path.size();++i){
            if(!str.empty()&&str[str.size()-1]=='/'&&path[i]=='/') continue;
            str+=path[i];
            if(path[i+1]=='/'&&path[i]!='/'){
                if(str=="/.."){
                    if(!temp.empty()){
                        temp.pop_back();
                    }
                }
                else if(str!="/.") {
                    temp.push_back(str);
                }
                str.clear();
            }
        }
        if(temp.empty()) return "/";
        while(!temp.empty()){
            ans+=temp.front();
            temp.pop_front();
        }
        while(ans[ans.size()-1]=='/') ans.erase(ans.end());
        return ans;
    }
WSL2部署Cadence Virtuoso IC25.1:Ubuntu 26.04排障实录 WSL2以轻量虚拟机结合完整Linux内核,为Windows桌面环境提供了原生级Linux运行能力,解决了传统虚拟机资源开销大、双系统切换低效的问题。对于依赖X11图形协议、FlexNet许可服务和特定动态库的EDA工具链而言,利用WSL2部署Linux发行版需要关注系统集成、显示通路与许可连通性。从技术原理看,图形层X Server的配置、动态库依赖的补齐以及license服务的主机名解析,共同构成EDA工具在WSL2中稳定运行的关键环节。在芯片设计场景中,设计工程师常需在Windows办公机与Linux 阅读详情

相关推荐

支持找回微信删除好友!一款人人可用的全能微信数据分析工具

找回删除好友、查看删除记录、恢复聊天信息....

1727

走迷宫队列算法java_链栈和递归实现迷宫算法

#includeusing namespace std;//=======================================位置(坐标)类========================class Coordinate{friend class Node;friend class LinkStack;friend bool mazePath(char **maze, int m);/...

weixin_42462603的博客 332

通过FlinkCDC将MySQL中变更的数据写入到kafka(DataStream方式)

文章目录前言一、CDC的种类?二、通过FlinkCDC将数据从MySQL导入到Kafka1.核心代码2.工具类3.可能会出现的错误及解决解决: 前言 CDC的Change Data Capture(变更数据捕获)的缩写 FlinkCDC的核心思想是监测并捕获数据库的变动(包括数据或数据表的插入、更新以及删除等),将这些变更按发生的顺序完整记录下来,写入到消息中间件中以供其他服务进行订阅及消费。 一、CDC的种类? CDC 主要分为基于查询和基于 Binlog 两种方式,简述两者的区别:

不会打球的摄影师不是好程序员 9622

71 简化路径(模拟、栈)

1. 问题描述: 以 Unix 风格给出一个文件的绝对路径,你需要简化它。或者换句话说,将其转换为规范路径。 在 Unix 风格的文件系统中,一个点(.)表示当前目录本身;此外,两个点 (..)表示将目录切换到上一级(指向父目录);两者都可以是复杂相对路径的组成部分。更多信息请参阅:Linux / Unix中的绝对路径 vs 相对路径 请注意,返回的规范路径必须始终以斜杠 / 开头,并且两...

二哈 326

QGIS插件实战:用百度地图AOI数据做个城市公园分析,从下载到出图全记录

本文详细介绍了如何利用QGIS的百度地图AOI插件进行城市公园分析,从插件安装、数据获取到空间分析与可视化全流程。通过实战案例演示了公园面积统计、服务范围缓冲区分析及专题地图制作,帮助用户高效完成城市绿地评估工作。

weixin_30790841的博客 556

飞牛NAS 0day漏洞导致断网?完整的排查修复方案来了(含一键检测修复工具)

家里网络莫名断网,折腾十来天才发现是NAS被0day漏洞利用了?🔍 本文详细记录了从发现问题到最终解决的全过程,包括如何自查系统是否被入侵、使用检测脚本和专杀脚本进行修复,以及如何通过端口管理、访问控制、监控预警等措施加固系统安全 🔒,帮助遇到同样问题的用户快速排查和解决NAS安全风险 ✅

XiaoqiangClub的博客 5521

2021-07-16 被代码暴揍的day8——简化路径 C++

leetcode-简化路径 题目要求 思路 对于这道题目,我们需要知道每一级路径是什么样的(即两个’/'符号之间的内容)。 如果是’.’,表示当前目录,这一级目录实际上什么用处也没有,需要排除。 如果是’…'表示上一级目录,那么就需要向上返回一级。 如果两个’/'连在一起,也是多余的,需要去掉。 另外就是将路径最后面的’/'去掉。 具体做法: 我们设定一个栈stack来存储当前的绝对路径,用一个字符串temp来存储临时的子路径名,然后从前到后遍历题目给出的绝对路径中的所有字符,不是’/‘时更新temp

weixin_45878105的博客 139

深度解析:LPDDR5 采样 Mask 背后的秘密 —— 从 Jitter 到 BER 全面剖析

在 LPDDR5 中,CK/DQS 信号相当于“指挥棒”,而数据(DQ)要在时钟节拍里被准确采样。Crosspoint Mask 区域横轴:时间 (Time)纵轴:电压 (Vref)👉 只要采样点落在这个区域内,数据就是正确的。否则就会出错。BERPBERPMask 就像高速公路的收费站口,如果车(采样点🚗)在车道内,顺利通过;一旦跑偏,就撞护栏。LPDDR5 的速率极高,UI 非常短,Mask 区域成为核心指标各种 Jitter、Noise 会不断压缩 Mask。

weixin_43199439的博客 354

71简化路径(栈、暴力模拟)

1、题目描述 以 Unix 风格给出一个文件的绝对路径,你需要简化它。或者换句话说,将其转换为规范路径。 在 Unix 风格的文件系统中,一个点(.)表示当前目录本身;此外,两个点 (..)表示将目录切换到上一级(指向父目录);两者都可以是复杂相对路径的组成部分。更多信息请参阅:Linux / Unix中的绝对路径 vs 相对路径 请注意,返回的规范路径必须始终以斜杠 / 开头,并且两个目...

Revendell的博客 201

2026华为OD机考新系统真题 + 双机位C卷 + 往年真题 - 题库目录分值说明 + 考点说明+在线OJ

2026年4月1日起,华为OD机试正式切换至新系统模式!采用力扣模式,无需自己写输入! 难度大幅度降低。正在备考华为OD机试的同学,优先刷新系统机试真题,可大幅提升通过率。 新系统考题考点与旧版一致,无需重新适应。本专栏所有算法题均配有详细思路解析,并提供C语言、JS、C++、Python、Go、Java多语言源码实现。订阅后私信即可开通专属OJ刷题权限,高效备考一次上岸!

算法大师! 45万+

Microsoft Forms功能深度解析:企业数据收集与协作的智能利器

Microsoft Forms是微软365生态中的在线表单工具,支持问卷调查、测验和投票创建,具备拖拽式界面、多题型设计和实时数据分析功能。其核心价值在于易用性、跨平台兼容性以及与Teams、SharePoint等微软服务的深度集成,满足GDPR/HIPAA等合规要求。提供表单创建、权限管理、自动化流程(通过Power Automate)和审计日志等功能,适用于金融、医疗、教育等多行业场景。虽然存在逻辑分支有限等约束,但通过案例证明能显著提升数据收集效率(达70-85%)。使用时需注意许可证配置(Busin

xueyunshengling的博客 9125

【栈】71. 简化路径

71. 简化路径 题目 71. 简化路径 给你一个字符串 path ,表示指向某一文件或目录的 Unix 风格 绝对路径 (以 ‘/’ 开头),请你将其转化为更加简洁的规范路径。 在 Unix 风格的文件系统中,一个点(.)表示当前目录本身;此外,两个点 (…) 表示将目录切换到上一级(指向父目录);两者都可以是复杂相对路径的组成部分。任意多个连续的斜杠(即,’//’)都被视为单个斜杠 ‘/’ 。 对于此问题,任何其他格式的点(例如,’…’)均被视为文件/目录名称。 请注意,返回的 规范路径 必须遵循下述格

兰陵鸡王的博客 476

【突变检验方法一】MATLAB实现Pettitt突变检验

MATLAB实现Pettitt突变检验及贝叶斯突变检测等

WW、forever的博客 1万+

力扣71. 简化路径

力扣71. 简化路径 字符串模拟

2301_80219163的博客 289

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

栈在字符串处理中的应用:从相邻字符消除到算法思维提升

在计算机科学中,栈是一种基础且重要的数据结构,遵循后进先出原则,特别适合处理具有“最近相关性”的问题。其核心原理在于,通过压栈和弹栈操作,可以高效地管理需要按顺序处理且可能涉及配对或消除的元素序列。这一特性使其在解决字符串处理、表达式求值、括号匹配等问题上展现出巨大技术价值。在工程实践中,栈常被用于实现函数调用、深度优先搜索以及本文重点讨论的字符串相邻元素消除场景。例如,在处理字符串中相邻重复字符的消除问题时,栈能够避免暴力模拟法中因动态修改字符串导致的索引错乱和性能低下问题,提供一种逻辑清晰、时间复杂度为

weixin_29597551的博客 287

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

算法(十一)字符串 Strings

算法之字符串

更木的博客 647

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

LeetCode·71.简化路径·栈模拟

栈模拟

m0_64560763的博客 256

【LeetCode】71. 简化路径

本文介绍了如何简化Unix风格的绝对路径,重点在于处理特殊符号和路径规范化。核心思路是利用栈结构:按/分割路径后,忽略空字符串和.,遇到..则弹出栈顶(非空时),其他有效目录名压入栈。最后用/连接栈中元素作为结果。关键难点包括处理连续斜杠、..回退边界情况以及识别特殊目录名(如...)。算法时间复杂度O(n),空间复杂度O(n),是处理路径规范化的最优方法。示例代码展示了基于栈的清晰实现,适用于各种边界情况。

qq_32019341的博客 1494

刷爆力扣的极简解法|71 简化路径:用栈三行代码秒掉 path 难题

上一章节,用栈解决了"删除相邻重复项",这一章节,继续用栈处理真实业务题。

哆来A梦没有口袋的博客 188

Leetcode 71. 简化路径

题目 以 Unix 风格给出一个文件的绝对路径,你需要简化它。或者换句话说,将其转换为规范路径。 在 Unix 风格的文件系统中,一个点(.)表示当前目录本身;此外,两个点 (…) 表示将目录切换到上一级(指向父目录);两者都可以是复杂相对路径的组成部分。更多信息请参阅:Linux / Unix中的绝对路径 vs 相对路径 请注意,返回的规范路径必须始终以斜杠 / 开头,并且两个目录名之间必须只有...

LetJava的博客 242

71. 简化路径(C语言实现 + 栈解法)

摘要:该问题要求将Unix风格的绝对路径简化为规范格式。解题思路是使用栈来维护路径:遇到"."跳过,".."出栈(若栈非空),其他目录名入栈。关键步骤包括:1)按"/"分割路径;2)用栈处理各段;3)最终拼接栈内容。C语言实现需注意内存管理,时间复杂度O(n)。易错点包括:连续斜杠处理、".."边界检查、结果格式要求等。核心思想是通过栈模拟路径操作,最终得到以单斜杠分隔、无冗余的规范路径。

2302_80441878的博客 234

leetcode每日一题71.简化路径 栈的简单应用 如果是你 你还会用什么方法

本篇内容:leetcode每日一题71.简化路径 栈的简单应用 最近更新:2022年1月5日 leetcode每日一题1576.替换所有的问号 字符串模拟这种简单题你还不会么 个人简介:一只二本院校在读的大三程序猿,本着注重基础,打卡算法,分享技术作为个人的经验总结性的博文博主,虽然可能有时会犯懒,但是还是会坚持下去的,如果你很喜欢博文的话,建议看下面一行~(疯狂暗示QwQ) 点赞 收藏 ⭐留言 一键三连 关爱程序猿,从你我做起 本文目录写在前面题目

Alascanfu的博客 168

leetcode 面试经典 150 题:简化路径

leetcode 面试经典 150 题:简化路径

世界那么大,我想去看看~【随心更新,看世界去了😄】 658

421 · 简化路径

后 for-loop 处理,用列表模拟栈,最后再。Unix 绝对路径按。,代码较长但思路直观。

个人总结 301

[LeetCode]71. 简化路径(java实现)模拟题

[LeetCode]71. 简化路径(java实现)模拟题1. 题目2. 读题(需要重点注意的东西)3. 解法4. 可能有帮助的前置习题6. 总结 1. 题目 2. 读题(需要重点注意的东西) 思路: 用res记录当前路径的位置,然后判断: 如果遇到“…”,则返回上一层路径 如果遇到“.”或者多余的斜杠,不做任何行动 其它情况,表示进入某个子目录,我们在 res 后面补上新路径即可 最后返回简化后得到的规范路径 。 3. 解法 -----------------------------------

cloud的博客 402

【C++】 ——牛客题解之简化Unix风格路径

题目描述 (刚看到这个题的时候,我的脑子是蒙的,不知道他要让我们干啥,后来发现这跟Linux还是有点关系的)以下是思路(虽然很长,但是牛人的解法很容易理解): 1、/表示根目录,linux/uinx下目录是成树结构的,根目录即树的根,不可能再继续向上了。 2、. 表示当前目录。 3、… 表示上级目录。 4、/也用于目录间的分隔,如/a/b 表示根目录下的a路径下的b路径;a/b 表示当前目录下的...

Vicky_Cr的博客 408
上一篇: 翻转字符串里的单词【stringstream解法】
下一篇: Java大数类BigInteger的应用:计算1到100的阶乘和
RealWeakCoder
博客等级 码龄7年 236粉丝 68原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值