[Stack]71. Simplify Path

  • 分類:Stack
  • 時(shí)間復(fù)雜度: O(n)
  • 空間復(fù)雜度: O(n)

71. Simplify Path

Given an absolute path for a file (Unix-style), simplify it. Or in other words, convert it to the canonical path.

In a UNIX-style file system, a period . refers to the current directory. Furthermore, a double period .. moves the directory up a level. For more information, see: Absolute path vs relative path in Linux/Unix

Note that the returned canonical path must always begin with a slash /, and there must be only a single slash / between two directory names. The last directory name (if it exists) must not end with a trailing /. Also, the canonical path must be the shortest string representing the absolute path.

Example 1:


Input: "/home/"

Output: "/home"

Explanation: Note that there is no trailing slash after the last directory name.

Example 2:


Input: "/../"

Output: "/"

Explanation: Going one level up from the root directory is a no-op, as the root level is the highest level you can go.

Example 3:


Input: "/home//foo/"

Output: "/home/foo"

Explanation: In the canonical path, multiple consecutive slashes are replaced by a single one.

Example 4:


Input: "/a/./b/../../c/"

Output: "/c"

Example 5:


Input: "/a/../../b/../c//.//"

Output: "/c"

Example 6:


Input: "/a//b////c/d//././/.."

Output: "/a/b/c"

代碼:

class Solution:
    def simplifyPath(self, path: 'str') -> 'str':
        
        stack=[]
        
        paths=path.split("/")
        for p in paths:
            if p=="..":
                if stack!=[]:
                    stack.pop()
            elif p!="." and p!="":
                stack.append(p)
        
        res="/"
        if stack==[]:
            return res
        for s in stack:
            res+=s+"/"
        return res[:-1]

討論:

1.這道題挺簡單的,用stack方法就能完美解決
2.凡是遇到這種“路徑類”的問題都用stack解,算是一個(gè)固定套路

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容