
解题思路
题目的大致意思是让我们过滤路径中哪些多余的操作符,在这里我们先统计下有哪些操作符:
/: 文件路径标示,必须保留//: 像这种多个斜杠的符号其实与单个的意义相同,当做单个来处理就行.: 表示当前目录,直接过滤掉就好..: 表示返回上一级目录,需要做特判
这样一整理其实思路已经很明确了,我们需要先把所有文件夹名过滤出来放在数组中,这样才好操作。同时还需要将斜杠给过滤掉,放到数组中进行遍历。
算法过程
- 创建变量栈
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)