LeetCode Simplify Path

来源:互联网 发布:门窗cad制图软件 编辑:程序博客网 时间:2024/06/17 15:18

LeetCode解题之Simplify Path


原题

化简Unix系统下一个文件的绝对路径。

注意点:

  • 根目录的上层目录还是根目录
  • 可能有多个分隔符同时使用

例子:

输入: path = “/a/./b/../../c/”

输出: “/c”

解题思路

用栈来处理,碰到有效字符就压栈,遇到上层目录字符”..”且栈不空时就弹出。为了最后连接字符串时头上有根目录,在栈底加一个空字符。

AC源码

class Solution(object):    def simplifyPath(self, path):        """        :type path: str        :rtype: str        """        parts = path.split("/")        result = ['']        for part in parts:            if part:                if part not in ('.', '..'):                    if len(result) == 0:                        result.append('')                    result.append(part)                elif part == '..' and len(result) > 0:                    result.pop()        if len(result) < 2:            return "/"        else:            return "/".join(result)if __name__ == "__main__":    assert Solution().simplifyPath("/a/./b/../../c/") == '/c'    assert Solution().simplifyPath("/home/") == "/home"    assert Solution().simplifyPath("/../../") == "/"

欢迎查看我的Github (https://github.com/gavinfish/LeetCode-Python) 来获得相关源码。

0 0