程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> LeetCode Simplify Path

LeetCode Simplify Path

編輯:C++入門知識

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("/../../") == "/"

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved