題目:
簡化路徑:
以 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)