https://leetcode-cn.com/problems/simplify-path/
# -*- coding:utf-8 -*-
class Solution(object):
def simplifyPath(self, path):
"""
:type path: str
:rtype: str
"""
command = path.split('/')
stack = []
for each in command:
if '.' == each:
continue
elif '..' == each:
if len(stack) > 0:
stack.pop()
elif '' == each:
continue
else:
stack.append(each)
res = ''
if len(stack) == 0:
return '/'
for each in stack:
res += str('/' + each)
return res
if __name__ == '__main__':
path = "/a/./b/../../c/"
path = "/a//b////c/d//././/.."
path = '/../'
path = '/home/'
print(Solution().simplifyPath(path))
思路:使用/来分割path路径,然后根据不同的命令进行出入栈操作,如果遇到.和空,则不做操作,如果遇到..切栈不空则出栈,遇到其他的就说明是路径,入栈,然后在输出的时候将栈转换成路径字符串即可,同时需要注意栈空的特殊情况。
0 条评论