zoukankan      html  css  js  c++  java
  • 71. Simplify Path

    Given an absolute path for a file (Unix-style), simplify it.

    For example,
    path = "/home/", => "/home"
    path = "/a/./b/../../c/", => "/c"
    path = "/a/../../b/../c//.//", => "/c"
    path = "/a//b////c/d//././/..", => "/a/b/c"

    In a UNIX-style file system, a period ('.') refers to the current directory, so it can be ignored in a simplified path. Additionally, a double period ("..") moves up a directory, so it cancels out whatever the last directory was. For more information, look here: https://en.wikipedia.org/wiki/Path_(computing)#Unix_style

    Corner Cases:

    Did you consider the case where path = "/../"?
    In this case, you should return "/".
    Another corner case is the path might contain multiple slashes '/' together, such as "/home//foo/".
    In this case, you should ignore redundant slashes and return "/home/foo".

    Solution1:

    class Solution:
        def simplifyPath(self, path):
            """
            :type path: str
            :rtype: str
            """
            res = []
            p = path.split('/')
            for i in p:
                if i=='' or i=='.':
                    continue
                if i=='..':
                    if len(res):
                       res.pop()
                    continue
                res.append(i)
            return '/'+'/'.join(res) #join的用法
    

    Solution2:

    class Solution:
        def simplifyPath(self, path):
            """
            :type path: str
            :rtype: str
            """
            return os.path.realpath(path)
    
  • 相关阅读:
    Oracle Sql优化之报表和数据仓库运算
    Oracle Sql优化之Rownum的使用
    Oracle Sql优化之范围处理
    c++11编译指令
    python 爬小说
    exvim快捷键
    几个崩溃问题
    网络穿透
    c# 拉取网页
    tars安装记
  • 原文地址:https://www.cnblogs.com/bernieloveslife/p/9736659.html
Copyright © 2011-2022 走看看