leetcode題 71 簡化路徑(中等)

2021-09-26 02:13:00 字數 1161 閱讀 7625

一、題目描述:71. 簡化路徑(中等)

以 unix 風格給出乙個檔案的絕對路徑,你需要簡化它。或者換句話說,將其轉換為規範路徑。

在 unix 風格的檔案系統中,乙個點(.)表示當前目錄本身;此外,兩個點 (..) 表示將目錄切換到上一級(指向父目錄);兩者都可以是複雜相對路徑的組成部分。更多資訊請參閱:linux / unix中的絕對路徑 vs 相對路徑

請注意,返回的規範路徑必須始終以斜槓 / 開頭,並且兩個目錄名之間必須只有乙個斜槓 /。最後乙個目錄名(如果存在)不能以 / 結尾。此外,規範路徑必須是表示絕對路徑的最短字串。

示例 1:

輸入:"/home/"

輸出:"/home"

解釋:注意,最後乙個目錄名後面沒有斜槓。

示例 2:

輸入:"/home//foo/"

輸出:"/home/foo"

解釋:在規範路徑中,多個連續斜槓需要用乙個斜槓替換。

示例 4:

輸入:"/a/./b/../../c/"

輸出:"/c"

示例 5:

輸入:"/a/../../b/../c//.//"

輸出:"/c"

示例 6:

輸入:"/a//bc/d//././/.."

輸出:"/a/b/c"

二、解題思路

使用棧,注意各種邊界條件

三、**

class solution 

else if(*s.rbegin() == '.')

}else if(*s.rbegin() != '/')

}else if(path[i] == '.')

s.pop_back();

while(s.size() > 0 && *s.rbegin() != '/')

}else

}else

if(s.size() == 0)

}else

}else

}if(s.size() > 1 && *s.rbegin() == '.' && s[s.size()-2] == '/')

if(s.size() > 1 && *s.rbegin() == '/')

return s;

}};

LeetCode 簡化路徑 71

給定乙個文件 unix style 的完全路徑,請進行路徑簡化。例如,path home home path a b c c 邊界情況 對於這道題目來說,最為關鍵的演算法就是如何處理 對於之前路徑的 退回 操作。不難發現,每次 退回 的都是當前路徑中的最後乙個 資料夾 每次進入的資料夾也都會出現在路...

LeetCode刷題之71 簡化路徑

我不知道將去向何方,但我已在路上!示例1 輸入 home 輸出 home 解釋 注意,最後乙個目錄名後面沒有斜槓。示例2 輸入 輸出 示例3 輸入 home foo 輸出 home foo 解釋 在規範路徑中,多個連續斜槓需要用乙個斜槓替換。示例4 輸入 a b c 輸出 c 示例5 輸入 a b ...

LeetCode 71 簡化路徑

題目鏈結 題目描述 給定乙個文件 unix style 的完全路徑,請進行路徑簡化。例如,path home home path a b c c 邊界情況 解決方法 2 如果是 則需要出棧 如果棧為空則不操作 因為這是返回上級目錄的符號 3 其他情況壓棧 class solution else p....