解题思路
题目的大致意思是让我们过滤路径中哪些多余的操作符,在这里我们先统计下有哪些操作符:
/
: 文件路径标示,必须保留//
: 像这种多个斜杠的符号其实与单个的意义相同,当做单个来处理就行.
: 表示当前目录,直接过滤掉就好..
: 表示返回上一级目录,需要做特判
这样一整理其实思路已经很明确了,我们需要先把所有文件夹名过滤出来放在数组中,这样才好操作。同时还需要将斜杠给过滤掉,放到数组中进行遍历。
算法过程
- 创建变量栈
stack
,负责存储所有文件夹名 - 同时对路径
path
进行分割,分割标识符为/
,将结果存储到数组tmp
中 - 然后遍历
tmp
,将无意义的符号过滤掉并将文件夹名放入到stack
中 - 如果遇到
..
符号,执行stack.pop()
即可 - 最后将
stack
转成字符串,以/
分割后返回
代码
class Solution:
def simplifyPath(self, path: str) -> str:
tmp = path.split('/')
stack = []
res = '/'
for c in tmp:
if c != '.' and c != '..' and c != '':
stack.append(c)
if c == ".." and stack: stack.pop()
return res + '/'.join(stack)