LeetCode-071-簡化路徑

題目描述:給你一個字符串 path ,表示指向某一文件或目錄的 Unix 風格 絕對路徑 (以 '/' 開頭),請你將其轉(zhuǎn)化為更加簡潔的規(guī)范路徑。
在 Unix 風格的文件系統(tǒng)中,一個點(.)表示當前目錄本身;此外,兩個點 (..) 表示將目錄切換到上一級(指向父目錄);兩者都可以是復雜相對路徑的組成部分。任意多個連續(xù)的斜杠(即,'//')都被視為單個斜杠 '/' 。 對于此問題,任何其他格式的點(例如,'...')均被視為文件/目錄名稱。
始終以斜杠 '/' 開頭。 兩個目錄名之間必須只有一個斜杠 '/' 。 最后一個目錄名(如果存在)不能 以 '/' 結(jié)尾。 此外,路徑僅包含從根目錄到目標文件或目錄的路徑上的目錄(即,不含 '.' 或 '..')。 返回簡化后得到的 規(guī)范路徑 。
示例說明請見LeetCode官網(wǎng)。
來源:力扣(LeetCode) ??
鏈接:https://leetcode-cn.com/problems/simplify-path/ ??
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有。商業(yè)轉(zhuǎn)載請聯(lián)系官方授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。
解法一:利用棧
聲明一個棧paths用來存出現(xiàn)過的目錄,然后遍歷path的字符,獲取每一個/之間的字符串str,str有以下幾種可能:
如果str是
.
,則不用處理;如果str是
..
,而且paths不為空,則paths拋棄棧頂元素即最外層目錄;如果str不是以上兩種情況,則說明str是一個目錄,入棧。
最后,將paths倒序排列,然后拼成目錄格式返回。
【每日寄語】 成功的道路是由目標鋪成的,大目標比沒目標有用,小目標比大目標有用,現(xiàn)在不玩命,將來命玩你。