• 【LeetCode】71. 简化路径


    1 问题

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

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

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

    始终以斜杠 '/' 开头。
    两个目录名之间必须只有一个斜杠 '/'
    最后一个目录名(如果存在)不能 以 '/' 结尾。
    此外,路径仅包含从根目录到目标文件或目录的路径上的目录(即,不含 '.''..')。
    返回简化后得到的 规范路径 。

    2 答案

    这题直接不会

    再次尝试,用splitjoin函数

    class Solution:
        def simplifyPath(self, path: str) -> str:
            
            list_path = path.split('/')
            new_path = []
            i = 0
            while i < len(list_path):
                if list_path[i] == '..':
                    if new_path:
                        new_path.pop()
                elif list_path[i] != '.' and list_path[i] != '':
                    new_path.append(list_path[i])
                i += 1
            res = '/'.join(new_path)
            while res and res[-1] == '/':
                res = res[:len(path)-1]
            return '/' + res
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

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

    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)  # 使用'/'来连接列表中的元素
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

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

  • 相关阅读:
    深入了解Java的核心库
    Abnova丨抗GBA单克隆抗体解决方案
    Redis内存回收
    思腾云计算
    MYSQL入门与进阶(四)
    【Git从青铜到王者】第一篇:Git引言
    【Linux系统化学习】进程优先级 | 进程饥饿 | 进程切换
    Allegro166查看走线阻抗操作指导
    排序算法.
    【社媒营销】WhatsApp Business API:您需要知道的一切
  • 原文地址:https://blog.csdn.net/CSDNLHCC/article/details/133967849