Leetcode 71. 简化路径

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

题目

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

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

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

示例 1:

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

示例 2:

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

…

示例 6:

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

解答

解法一:正则分割 + 栈

(点点) 的操作是回退到上一目录,这跟栈的机制是相似的。

所以本题我们可以:

  1. 先将所有的指令使用正则拆出来。
  2. 用栈模拟指令的进出。
  3. 最后拼接出路径即可。

然鹅性能较差,初步分析是因为正则匹配导致的问题。

代码
class Solution {
    public String simplifyPath(String path) {
        String[] paths = path.split("/+");
        LinkedList<String> stack = new LinkedList<>();
        for(int i = 1; i < paths.length; i ++) {
            String cur = paths[i];
            if("..".equals(cur)) {
                if(!stack.isEmpty()) stack.pollLast();
            } else if(!".".equals(cur)) {
                stack.offerLast(cur);
            }
        }
        
        return "/" + String.join("/", stack);
    }
}
结果

在这里插入图片描述

解法二:不使用正则

与上述思路一致,但是不使用正则(因为开销大),而是手动切分出指令。

代码
class Solution {
    public String simplifyPath(String path) {
        LinkedList<String> stack = new LinkedList<>();
        int gt = 0;
        while(gt < path.length()) {
            while(gt < path.length() && path.charAt(gt) == '/') gt ++;
            
            int lt = gt ++;
            if(lt == path.length()) break;
            while(gt < path.length() && path.charAt(gt) != '/') gt ++;
            
            String cur = path.substring(lt, gt);
            if("..".equals(cur)) {
                if(!stack.isEmpty()) stack.pollLast();
            } else if(!".".equals(cur)) {
                stack.offerLast(cur);
            }
        }
        
        return "/" + String.join("/", stack);
    }
}
结果

在这里插入图片描述

【中等】力扣算法题解析LeetCode71:简化路径 本文介绍了如何将Unix风格的绝对路径转换为规范路径的算法。解题思路包括分割路径、处理目录名(跳过无效字符、处理上级目录标记)和构建结果路径。通过Java实现,使用列表存储有效目录名并按规则处理,最终拼接成规范的路径格式。该算法高效处理了连续斜杠、当前目录和上级目录标记,确保结果符合要求。执行效率较高,适用于长路径处理。 阅读详情

相关推荐

LibTV本地部署:AI漫剧创作完整解决方案与实战指南

如果你正在关注AI漫剧创作这个赛道,可能会发现一个有趣的现象:市面上的AI视频工具要么功能单一,要么云端服务昂贵且存在内容审核风险。而今天要介绍的LibTV本地部署方案,或许能为你打开一扇新的大门。 这个方案的核心是Seedance2.0与豆包AI的本地化集成,它真正解决的是创作者对内容自主权、成本控制和创作效率的三重需求。与红果、抖音等平台提供的标准化AI工具相比,本地部署意味着你可以完全掌控生成过程,不受平台规则限制,更重要的是——所有数据都在本地,不存在内容泄露风险。 1. 这篇文章真正要解决的问题

weixin_28745309的博客 518

leetCode71. 简化路径

leetCode71. 简化路径

qq_48290779的博客 475

零差云控关节模组:EtherCAT+preempt-RT实现微秒级同步

关节模组是协作机器人、外骨骼与高精度服务机器人的核心执行单元,其性能瓶颈常在于多轴运动的时序一致性与实时闭环能力。实现‘零差’同步依赖于确定性通信(如EtherCAT)与硬实时操作系统支持(如Linux preempt-RT),前者保障指令与状态在微秒级时间戳下全局对齐,后者消除内核调度抖动,使PID控制、电流采样、编码器反馈等关键路径具备纳秒级可预测性。技术价值体现在相位偏差<±0.01°、端到端控制周期稳定1ms、连续运行温漂<±1.2℃等工程指标,广泛应用于力控装配、康复训练、远程遥操作等对动态精度与

weixin_34192816的博客 1197

LeetCode-----第七十一题-----简化路径

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

L_smartworld的博客 469

随机向量函数链神经网络(RVFLNN)简介——附测试代码

宽度学习(Broad Learning System)原理介绍:随机向量函数链神经网络(RVFLNN) 目录宽度学习(Broad Learning System)原理介绍:随机向量函数链神经网络(RVFLNN)结构分析和训练优化 函数链神经网络(Functional-link neural network,简称FLNN)的结构如下图。 和深度神经网络结构不同的是,FLNN相当于把隐层放到了输入层中,作为增强结点(Enhancement nodes)。也可以理解成FLNN在输入层就对输入向量进行了非线性变换

weixin_44517742的博客 1万+

springboot源码 红色J_通达信副图指标源码之,出手就赢

今天跟大家分享一个通达信副图指标源码,本指标没有未来函数,因为本指标没有卖点提示,所以本指标需配合主图指标使用效果会更好,简单易懂,很容易明白,所以就不过多介绍使用方法了,以下是指标的贴图。风险提示!股市有风险买卖需谨慎,本指标只做参考建议,不做买卖交易结果,自己要对自己交易结果的盈亏负责,以下是指标的源码。VAR2:=REF(LOW,1);VAR3:=SMA(ABS(LOW-VAR2),3,1)...

weixin_39859909的博客 2847

LeetCode71-简化路径

感觉最近做算法题没有状态了 一个上午就只搞了这道题 而且还没弄出来 有些惭愧啊 明天就出CCF考试成绩了 希望能给我好运 71-简化路径 以 Unix 风格给出一个文件的绝对路径,你需要简化它。或者换句话说,将其转换为规范路径。 在 Unix 风格的文件系统中,一个点(.)表示当前目录本身;此外,两个点 (..) 表示将目录切换到上一级(指向父目录);两者都可以是复杂相对路径的组成...

飞奔的菜猪的博客 264

Langchain cannot connect with Azure SQL Database

Langchain 无法连接到 Azure SQL 数据库

suiusoar 633

Leetcode 71:简化路径(最详细解决方案!!!)

给定一个文档 (Unix-style) 的完全路径,请进行路径简化。 例如, path = &amp;quot;/home/&amp;quot;, =&amp;amp;gt; &amp;quot;/home&amp;quot; path = &amp;quot;/a/./b/../../c/&amp;quot;, =&amp;amp;gt; &amp;quot;/c&amp;quot; 边界情况:

coordinate的博客 6468

stable diffusioncontrolNet 预处理器/模型的下载及安装使用教程

首先说明,controlNet 的模型 不同于stable diffusion 模型,这一点一定要区分清楚。下面提供多个ControlNet 预处理器+ 专用模型的百度网盘下载链接,都是由群友整理贡献,但各自包含的版本不同,大家可自行选择。推荐下载紫色链接内的模型,fp16版文件更小,稍微新一些的controlnet插件还添加了对control-lora的支持(注意,要求controlnet插件的版本比12月16号新(1.1.423以上)才能正常识别),推荐下载;

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 3384

Cesium初级开发教程之三十:Primitive集合

教程示例网站:https://thomaz529.github.io。

484

LeetCode 力扣 71. 简化路径

题目描述(中等难度) 生成一个绝对路径,把相对路径中 ".." 和 "." 都转换为实际的路径,此外,"///" 多余的 "/" 要去掉,开头要有一个 "/",末尾不要 "/"。 解法一 这道题,只要理解了题意,然后理一下就出来了。下面代码就不考虑空间复杂度了,多创建几个数组,代码会简洁一些。 public String simplifyPath(String path) { //先利用...

wind_liang的博客 889

解析AI人工智能领域AI芯片的散热技术

当你用ChatGPT写代码、用AI生成高清图片时,背后的AI芯片可能正在“发高烧”——全球TOP500超算的平均功耗已突破10兆瓦,单颗GPU的峰值功耗超过700W(相当于3台家用空调同时运行)。本文将聚焦AI芯片的散热技术,覆盖从基础原理到前沿方案的全链条解析,帮助读者理解“散热为什么比算力更重要”。

AIGC应用创新大全的博客 934

leetcode每日一题 一起进步 71 简化路径

leetcode每日一题 一起进步 71 简化路径题目描述知识点:栈的应用解答 在家这么久刷了不少题,也想着总结一下,欢迎看到的小伙伴一起打卡,监督学习进步,欢迎加v:15810853703,第二天打卡qaq 题目描述 知识点:栈的应用 以 Unix 风格给出一个文件的绝对路径,你需要简化它。或者换句话说,将其转换为规范路径。 在 Unix 风格的文件系统中,一个点(.)表示当前目录本身;此外,...

clearlove_7的博客 269

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

【leetcode 71】【简化路径】

leetcode 71【简化路径】 题目链接 https://leetcode-cn.com/problems/simplify-path/ 解题思路与代码思路: 主要是对特殊字符的一个处理,只留真正有用的路径在栈中,然后再取出来。对于斜杆“/”,可能存在多个,都过滤掉只剩下一个,′..′'..'′..′代表前一个目录,当它不在首部时,将′..′'..'′..′和前一个元素pop出去,如果在首部,就只将′..′'..'′..′去除 elif  ielif \ \ ielif&nbsp

zyuPp的博客 254

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

LeetCode 71. 简化路径

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

m0_56090828的博客 930

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

71. 简化路径【 力扣(LeetCode) 】

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

yyh520025的博客 929

LeetCode(力扣)71. 简化路径Python

【代码】LeetCode(力扣)71. 简化路径Python。

qq_44953660的博客 226

leetcode-71 | 简化路径

title: leetcode-71 | 简化路径 date: 2019-7-27 15:11:33 comments: true categories: “leetcode” tags: - leetcode 中等难度 - 栈 题目描述 以 Unix 风格给出一个文件的绝对路径,你需要简化它。或者换句话说,将其转换为规范路径。 在 Unix 风格的文件系统中,一个点(.)表示当前目录本身;此外...

梦否 439

力扣71.简化路径

【代码】力扣71.简化路径。

Pisasama的博客 348

LeetCode71简化路径

为什么遇到..就要回退一级。4.arr与str的区别。

Wjs153612的博客 545

Leetcode 71. 简化路径 C++

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

weixin_43750513的博客 225

Leetcode 71. 简化路径

Leetcode 71. 简化路径 标签: Leetcode 题目地址: https://leetcode-cn.com/problems/simplify-path/ 题目描述 以 Unix 风格给出一个文件的绝对路径,你需要简化它。或者换句话说,将其转换为规范路径。 在 Unix 风格的文件系统中,一个点(.)表示当前目录本身;此外,两个点 (..)&nbsp;表示将目录切换到上一级...

CoderWangSon 355

LeetCode第71题_简化路径

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

qq_40263592的博客 903

Leetcode71. 简化路径

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

会流泪de鱼的博客 312

leetcode71-简化路径

2.两个目录名之间必须只有一个斜杠 '/' ,多个‘/’视为一个‘/’。4.此外,路径仅包含从根目录到目标文件或目录的路径上的目录(即,不含 '.' 或 '..')‘.’表示本目录可以直接清除 ‘..’表示上一级目录要 清除上一级目录。这道题目是一道字符串截取的问题,这道题主要考虑的就是有关字符串截取的规范,整体来说要有一个清晰的思路。此外,路径仅包含从根目录到目标文件或目录的路径上的目录(即,不含。输入:path = "/a/./b/../../c/"输入:path = "/home//foo/"

m0_50550801的博客 488
上一篇: Leetcode 67. 二进制求和
下一篇: Leetcode 76. 最小覆盖子串
一纸浮萍
博客等级 码龄9年 11粉丝 103原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值