大家好,我是亓官劼(qí guān jié ),在【亓官劼】公眾號、CSDN、GitHub、B站等平台分享一些技術博文,主要包括前端開發、python後端開發、小程序開發、數據結構與算法、docker、Linux常用運維、NLP等相關技術博文,時光荏苒,未來可期,加油~
如果喜歡博主的文章可以關注博主的個人公眾號【亓官劼】(qí guān jié),裡面的文章更全更新更快。如果有需要找博主的話可以在公眾號後台留言,我會盡快回復消息.
本文原創為【亓官劼】(qí guān jié ),請大家支持原創,部分平台一直在惡意盜取博主的文章!!! 全部文章請關注微信公眾號【亓官劼】。
給你一個字符串 path
,表示指向某一文件或目錄的 Unix 風格 絕對路徑 (以 '/'
開頭),請你將其轉化為更加簡潔的規范路徑。
在 Unix 風格的文件系統中,一個點(.
)表示當前目錄本身;此外,兩個點 (..
) 表示將目錄切換到上一級(指向父目錄);兩者都可以是復雜相對路徑的組成部分。任意多個連續的斜槓(即,'//'
)都被視為單個斜槓 '/'
。 對於此問題,任何其他格式的點(例如,'...'
)均被視為文件/目錄名稱。
請注意,返回的 規范路徑 必須遵循下述格式:
'/'
開頭。'/'
。'/'
結尾。'.'
或 '..'
)。返回簡化後得到的 規范路徑 。
示例 1:
輸入:path = "/home/"
輸出:"/home"
解釋:注意,最後一個目錄名後面沒有斜槓。
示例 2:
輸入:path = "/../"
輸出:"/"
解釋:從根目錄向上一級是不可行的,因為根目錄是你可以到達的最高級。
示例 3:
輸入:path = "/home//foo/"
輸出:"/home/foo"
解釋:在規范路徑中,多個連續斜槓需要用一個斜槓替換。
示例 4:
輸入:path = "/a/./b/../../c/"
輸出:"/c"
提示:
1 <= path.length <= 3000
path
由英文字母,數字,'.'
,'/'
或 '_'
組成。path
是一個有效的 Unix 風格絕對路徑。利用棧。如果是..
且棧裡有元素,則彈出棧頂。如果是其他的則壓棧,Python可以直接利用split去除掉多余的/
,所以不用考慮
class Solution:
def simplifyPath(self, path: str) -> str:
path = path.split('/')
stack = []
for item in path:
if item == '':
continue
if item == '..':
if len(stack) > 0:
stack.pop()
elif item != '.':
stack.append(item)
return "/"+'/'.join(stack)