简化路径

题目描述

来源于 https://leetcode-cn.com/

给定一个文档 (Unix-style) 的完全路径,请进行路径简化。

例如,
path = "/home/", => "/home"
path = "/a/./b/../../c/", => "/c"

边界情况:

  • 你是否考虑了 路径 = "/../" 的情况?
    在这种情况下,你需返回 "/" 。
  • 此外,路径中也可能包含多个斜杠 '/' ,如 "/home//foo/" 。
    在这种情况下,你可忽略多余的斜杠,返回 "/home/foo" 。

解法:

<<< path = '/a/b/./c//d/../e/f'
<<< path.split('/')
>>> ['', 'a', 'b', '.', 'c', '', 'd', '..', 'e', 'f']

遇到空白跳过,遇到 . 跳过,遇到字符将字符入栈,遇到 .. 出栈一个字符。

class Solution:
    def simplifyPath(self, path):
        spans = path.split('/')
        stack = []

        for span in spans:
            if span == '' or span == '.':
                continue
                
            if span == '..' and len(stack) > 0:
                stack.pop()
                continue
                
            stack.append(span)

        return '/' + '/'.join(stack)