题目分析:
这一题是让我们简化文件路径,文件路径就是类Unix系统的。如:输入:"/a/./b/…/…/c/",输出:"/c"。我们可以先把斜杠中的串截取出来,然后判断就三种情况,遇到文字串就加入栈,遇到 ’ . ’ 不做处理,遇到 ’ … '就出栈顶层元素。
解题思路:
在分割元素的时候可以自己写判断分割也可以调用split(’/’)。在组合的时候可以用 ‘’.join(list)组合或者栈本身用一个str实现。根据上面的思路,下面有两个测试代码。
测试代码1:
class Solution:
def simplifyPath(self, path):
stack = []
i = 0
while i < len(path):
end = i+1
while end < len(path) and path[end] != "/":
end += 1
sub=path[i+1:end]
if len(sub) > 0:
if sub == "..":
if stack != []: stack.pop()
elif sub != ".":
stack.append('/' + sub)
i = end
if stack == []: return "/"
return ''.join(stack)
print(Solution().simplifyPath("/a/../../b/../c//.//"))
测试代码2:
class Solution:
def simplifyPath(self, path):
path = path.split('/')
curr = '/'
for i in path:
if i == '..':
if curr != '/':
curr = '/'.join(curr.split('/')[:-1])
if curr == '': curr = '/'
elif i != '.' and i != '':
curr += '/' + i if curr != '/' else i
return curr
print(Solution().simplifyPath("/a/../../b/../c//.//"))