【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/

相关推荐
lifallen4 小时前
Paimon LSM Tree Compaction 策略
java·大数据·数据结构·数据库·算法·lsm-tree
web_Hsir6 小时前
vue3.2 前端动态分页算法
前端·算法
地平线开发者8 小时前
征程 6M 部署 Omnidet 感知模型
算法·自动驾驶
秋说9 小时前
【PTA数据结构 | C语言版】线性表循环右移
c语言·数据结构·算法
浩瀚星辰20249 小时前
图论基础算法:DFS、BFS、并查集与拓扑排序的Java实现
java·算法·深度优先·图论
JiaJZhong11 小时前
力扣.最长回文子串(c++)
java·c++·leetcode
oioihoii12 小时前
C++随机打乱函数:简化源码与原理深度剖析
开发语言·c++·算法
不知名。。。。。。。。12 小时前
分治算法---快排
算法
minji...12 小时前
数据结构 算法复杂度(1)
c语言·开发语言·数据结构·算法
凌肖战12 小时前
力扣网编程150题:加油站(贪心解法)
算法·leetcode·职场和发展