給定乙個文件 (unix-style) 的完全路徑,請進行路徑簡化。
例如,path="/home/"
, =>"/home"
path="/a/./b/../../c/"
, =>"/c"
邊界情況:
把幾種邊界情況考慮清楚即可:
如果是『.』,則自動去除
如果是『..』,則把前乙個有效字元去除
如果是多個連續斜槓『/』,則去除這些斜槓「/」
根據這幾個限定,編碼實現都是先通過『/』將有效字元分割出來,接下來可以採用兩種風格編碼:第一種,發現乙個有效字元就新增『/』;第二種,還是將所有有效字元儲存成乙個list,最後返回時統一新增分隔符 『/』。好像第二種更好理解,執行時間稍微短一點
第一種風格
class solution:
def simplifypath(self, path):
""":type path: str
:rtype: str
"""path.replace('//', '/')
list = path.split('/')
res = '/'
num =
for i in range(len(list)):
if list[i] == '..' and len(res) > 1:
res = res[:len(res) - num[-1] - 1]
num=num[:-1]
elif list[i] != '' and list[i] != '.' and list[i] != '..':
res = res + list[i] + '/'
return res[:-1] if len(res) > 1 else res
第二種風格:
class solution:
def simplifypath(self, path):
""":type path: str
:rtype: str
"""path.replace('//', '/')
list = path.split('/')
res =
for i in range(len(list)):
if list[i] == '..' and len(res) > 0:
res = res[:-1]
elif list[i] != '' and list[i] != '.' and list[i] != '..':
return '/'+'/'.join(res)
71 簡化路徑 python實現
題目描述 以 unix 風格給出乙個檔案的絕對路徑,你需要簡化它。或者換句話說,將其轉換為規範路徑。在 unix 風格的檔案系統中,乙個點 表示當前目錄本身 此外,兩個點 表示將目錄切換到上一級 指向父目錄 兩者都可以是複雜相對路徑的組成部分。請注意,返回的規範路徑必須始終以斜槓 開頭,並且兩個目錄...
71 簡化路徑
題目 以 unix 風格給出乙個檔案的絕對路徑,你需要簡化它。或者換句話說,將其轉換為規範路徑。在 unix 風格的檔案系統中,乙個點 表示當前目錄本身 此外,兩個點 表示將目錄切換到上一級 指向父目錄 兩者都可以是複雜相對路徑的組成部分。更多資訊請參閱 linux unix中的絕對路徑 vs 相對...
71 簡化路徑
以 unix 風格給出乙個檔案的絕對路徑,你需要簡化它。或者換句話說,將其轉換為規範路徑。在 unix 風格的檔案系統中,乙個點 表示當前目錄本身 此外,兩個點 表示將目錄切換到上一級 指向父目錄 兩者都可以是複雜相對路徑的組成部分。更多資訊請參閱 linux unix中的絕對路徑 vs 相對路徑 ...