71 簡化路徑(python)

2021-09-02 18:48:13 字數 1394 閱讀 4066

給定乙個文件 (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 相對路徑 ...