简化路径
- 难度: 中等
- 通过率: 27.7%
- 题目链接:https://leetcode-cn.com/problems/simplify-path
题目描述
给定一个文档 (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)