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

相关推荐
奔跑的废柴24 分钟前
LeetCode 925. 长按键入 java题解
java·算法·leetcode·双指针
姬公子52125 分钟前
leetcode hot100刷题日记——7.最大子数组和
c++·算法·leetcode
闻缺陷则喜何志丹29 分钟前
【回溯 剪支 状态压缩】# P10419 [蓝桥杯 2023 国 A] 01 游戏|普及+
c++·算法·蓝桥杯·剪枝·回溯·洛谷·状态压缩
Wneosy44 分钟前
第十六届C++B组easyQuestions
c++·算法·蓝桥杯
赵和范1 小时前
C++:与7无关的数
开发语言·c++·算法
一切顺势而行1 小时前
树的基础算法
java·开发语言·算法
Hongs_Cai1 小时前
高级学习算法(神经网络 决策树)
笔记·神经网络·学习·算法·决策树
星光银河1 小时前
链表操作场景与循环条件技巧总结表(含指针初始化)
数据结构·算法·链表
2301_794461571 小时前
力扣-两数之和
数据结构·算法·leetcode
技术帮扶户1 小时前
Leetcode-3 判断根结点是否等于子结点之和
算法·leetcode