LeetCode —— 71.简化路径(Python3)
以 Unix 风格给出一个文件的绝对路径,你需要简化它。或者换句话说,将其转换为规范路径。
在 Unix 风格的文件系统中,一个点(.)表示当前目录本身;此外,两个点 (…) 表示将目录切换到上一级(指向父目录);两者都可以是复杂相对路径的组成部分。更多信息请参阅:Linux / Unix中的绝对路径 vs 相对路径
请注意,返回的规范路径必须始终以斜杠 / 开头,并且两个目录名之间必须只有一个斜杠 /。最后一个目录名(如果存在)不能以 / 结尾。此外,规范路径必须是表示绝对路径的最短字符串。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/simplify-path
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
——————————————————————
个人理解题意:从前往后看文件的绝对路径,两个点(…)的作用是将目录切换到上一级,一个点(.)的作用是表示当前目录本身,因此可以在操作时将其忽略。
对于给定绝对文件路径,使用’/‘对其进行切分,因为绝对路径中可能存在’//‘这样的组合,使用’/‘切分后会产生’'这样的输出,同时因为/./的作用是表示当前目录本身,所以没有意义,在切分时也可以将其忽略;
对于两个点(…),如果其存在于根目录中,没有办法将目录切换到上一级,因此可以跳过;但是如果在遇到(…)的时候不是根目录,则需要将其当前目录进行删除。
其Python3代码如下:
class Solution:def simplifyPath(self, path: str) -> str:pl = [p for p in path.split('/') if p not in ['','.']] # 忽略'//'和'/./'的情况,这两种切分后为''和'.'while '..' in pl: # 找到列表中第一个'..'的位置idx = pl.index('..')if idx != 0: # 表示当前目录不是根目录pl = pl[:idx-1] + pl[idx+1:] # 将前目录进行删除else: # 当前目录为根目录pl.remove('..') # 直接删除'..',因为没有意义,根目录没办法返回更上一级的目录return '/' + '/'.join(pl) # 拼接并返回规范化的绝对路径
时间复杂度为O(n),空间复杂度为O(n);
LeetCode —— 71.简化路径(Python3)相关推荐
- LeetCode 71. 简化路径(栈)
1. 题目 以 Unix 风格给出一个文件的绝对路径,你需要简化它.或者换句话说,将其转换为规范路径. 在 Unix 风格的文件系统中,一个点(.)表示当前目录本身:此外,两个点 (..) 表示将目录 ...
- 2022-3-19 Leetcode 71. 简化路径
第一版 class Solution {public:string simplifyPath(string path) {vector<string> mysk;string ret;in ...
- LeetCode 70爬楼梯71简化路径72编辑距离(dp)
新人公众号(求支持):bigsai 专注于Java.数据结构与算法,一起进大厂不迷路! 算法文章题解全部收录在github仓库bigsai-algorithm,求star! 关注这个潇洒青年一起飞,回 ...
- LeetCode+ 71 - 75
简化路径 算法标签:栈.字符串 给我们一个路径,要求把文件路径化简,给定的路径一定是合法的 Linux 路径,一个合法的 Linux 路径一般从 / 开始,/ 表示根目录,有很多的子目录 home.y ...
- LeetCode 71~75
前言 本文隶属于专栏<LeetCode 刷题汇总>,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢! 本专栏目录结构请见LeetCode 刷题汇总 正文 幕布 幕 ...
- LeetCode/LintCode 题解丨一周爆刷字符串:简化路径
描述 给定一个文件的绝对路径(Unix-style),请进行路径简化. Unix中, . 表示当前目录, - 表示父目录. 结果必须以 / 开头,并且两个目录名之间有且只有一个 /.最后一个目录名(如 ...
- LeetCode 71. Simplify Path
LeetCode 71. Simplify Path 本博客转载自:https://blog.csdn.net/makuiyu/article/details/44497901 Solution1:没 ...
- leetcode 64. 最小路径和(递归 / 动态规划解法图解)(Java版)
题目 leetcode 64. 最小路径和 提示: m == grid.length n == grid[i].length 1 <= m, n <= 200 0 <= grid[i ...
- LeetCode.M62.不同路径
LeetCode.M62.不同路径 题目: 题目大意: 给定一个 m * n 的方格,从 (0, 0) 走到 (m - 1, n - 1).规定只能**向下.向右 ** 数据范围: 1 <= ...
最新文章
- c++自底向上算符优先分析_词法分析程序的自动生成器(二)——Thompson算法
- iOS最好用的引导页
- html语义化面试题,前端面试题-HTML结构语义化
- PHP面试题:使用PHP描述快速排序算法,对象可以是一个数组?
- [转]写一个块设备驱动(第八章)
- dev 报表设计器 怎么设置每页10行_可嵌入您系统的.NET 报表控件ActiveReports:带状列表组件...
- python--json pickle 模块
- PC串口DB9接口 示意图 (备忘)
- juniper CLI 基本操作
- python网络爬虫系列教程——python中pyquery库应用全解
- 辐流式重力浓缩池计算_污泥浓缩池工作方式
- vs2019 + vcpkg安装OpenSSL
- Elasticsearch节点类型
- 软件测试报告模板怎么写,这篇文章告诉你
- NodeJS博客实战26_源码与总结
- 高级Java开发人员最常访问的几个网站
- tomcat配置优化,apr的配置详解
- IE中对于本地地址不使用代理服务器的选项
- dp题目总结(1)——基础
- Easyui DataGrid Editor