image.png

思路:

  • 模拟栈操作,遇到目录名入栈,遇到..就出栈,那么,最后还在栈里面的,就是剩下的完整目录应有的各个目录名
  • 将目录名重新组织起来,形成一个新的路径,返回

    代码:

    1. class Solution:
    2. def simplifyPath(self, path: str) -> str:
    3. # 去掉重复的斜杠
    4. items = [item for item in path.split(*'/') if item != '']
    5. stack = []
    6. for item in items:
    7. if item == '.':
    8. continue
    9. elif item == '..':
    10. if not stack:
    11. continue
    12. else:
    13. stack.pop()
    14. else:
    15. stack.append(item)
    16. return '/'+'/'.join(stack)