zoukankan      html  css  js  c++  java
  • LeetCode Simplify Path

    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) 来获得相关源代码。

  • 相关阅读:
    HDU 1285
    HDU 1251
    HDU 1166
    UVA 10003
    HDU 5968
    CodeForces 371C
    POJ 2456
    POJ 2250
    oracle的start with connect by prior
    Hibernate session中的createCriteria方法
  • 原文地址:https://www.cnblogs.com/yjbjingcha/p/7040989.html
Copyright © 2011-2022 走看看