【LeetCode】71. 简化路径

1 问题

给你一个字符串 path ,表示指向某一文件或目录的 Unix 风格 绝对路径 (以 '/' 开头),请你将其转化为更加简洁的规范路径。

在 Unix 风格的文件系统中,一个点(.)表示当前目录本身;此外,两个点 (..) 表示将目录切换到上一级(指向父目录);两者都可以是复杂相对路径的组成部分。任意多个连续的斜杠(即,'//')都被视为单个斜杠 '/' 。 对于此问题,任何其他格式的点(例如,'...')均被视为文件/目录名称。

请注意,返回的 规范路径 必须遵循下述格式:

始终以斜杠 '/' 开头。

两个目录名之间必须只有一个斜杠 '/'

最后一个目录名(如果存在)不能 以 '/' 结尾。

此外,路径仅包含从根目录到目标文件或目录的路径上的目录(即,不含 '.''..')。

返回简化后得到的 规范路径 。

2 答案

这题直接不会

官方解,利用栈,把当前目录压入栈中,遇到..弹出栈顶,最后返回栈中元素

python 复制代码
class Solution:
    def simplifyPath(self, path: str) -> str:
        stack = []  # 用列表当做栈
        path = path.split('/')  # '//'也会被当做分割符分割,'/'不会存在字符串中

        for item in path:
            if item == '..':
                if stack:
                    stack.pop()
            elif item and item != '.':
                stack.append(item)
        return '/'+'/'.join(stack)  # 使用'/'来连接列表中的元素

https://leetcode.cn/problems/simplify-path/solutions/

相关推荐
爱吃芝麻汤圆1 分钟前
分布式——分布式一致性算法(共识算法)
分布式·算法·共识算法
周方.26 分钟前
191. 位1的个数
数据结构·算法·leetcode·链表·职场和发展
可可格子衫34 分钟前
129. 求根节点到叶节点数字之和 --- DFS +回溯(js)
javascript·算法·深度优先
Tony沈哲1 小时前
基于 MODNet 和 Face Parsing 实现高质量人像分割与换发色
深度学习·opencv·算法
缘友一世1 小时前
设计模式之五大设计原则(SOLID原则)浅谈
java·算法·设计模式
圣保罗的大教堂2 小时前
leetcode 1432. 改变一个整数能得到的最大差值 中等
算法·leetcode·职场和发展
Coding小公仔2 小时前
LeetCode 48. 旋转图像
算法·leetcode·职场和发展
幻奏岚音2 小时前
Java数据结构——第 2 章线性表学习笔记
java·数据结构·笔记·学习·算法·排序算法
CoovallyAIHub2 小时前
YOLOv8/v10/v11自动驾驶实测对比:揭秘v11遮挡车辆检测精度提升关键
深度学习·算法·计算机视觉
TGB-Earnest3 小时前
【leetcode-两两交换链表中的节点】
算法·leetcode·链表