一、題目描述: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....