Leetcode練習(Python):字符串類:第71題:簡化路徑:以 Unix 風格給出一個文件的絕對路徑,你需要簡化它。或者換句話說,將其轉換為規范路徑。


題目:
簡化路徑:

以 Unix 風格給出一個文件的絕對路徑,你需要簡化它。或者換句話說,將其轉換為規范路徑。

在 Unix 風格的文件系統中,一個點(.)表示當前目錄本身;此外,兩個點 (..) 表示將目錄切換到上一級(指向父目錄);兩者都可以是復雜相對路徑的組成部分。更多信息請參閱:Linux / Unix中的絕對路徑 vs 相對路徑

請注意,返回的規范路徑必須始終以斜杠 / 開頭,並且兩個目錄名之間必須只有一個斜杠 /。最后一個目錄名(如果存在)不能以 / 結尾。此外,規范路徑必須是表示絕對路徑的最短字符串。

思路:

主要考慮的是'.'和'..'存在的情況,'.'表示留在當前目錄,因此不做任何處理,'..'表示返回上級目錄,想到使用棧來實現,每當遇到一個'..'則彈出'..'前面目錄,做到返回上一級目錄。

程序:

class Solution:
    def simplifyPath(self, path: str) -> str:
        if not path:
            return " "
        path = path.split('/')
        myStack = []
        for index in path:
            if index and index != '.' and index != '..':
                myStack.append(index)
            elif index == '.':
                continue
            elif index == '..' and myStack:
                myStack.pop()
        return '/' + '/'.join(myStack)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM