題目描述:
以 unix 風格給出乙個檔案的絕對路徑,你需要簡化它。或者換句話說,將其轉換為規範路徑。
在 unix 風格的檔案系統中,乙個點(.)表示當前目錄本身;此外,兩個點 (…) 表示將目錄切換到上一級(指向父目錄);兩者都可以是複雜相對路徑的組成部分。更多資訊請參閱:linux / unix中的絕對路徑 vs 相對路徑
請注意,返回的規範路徑必須始終以斜槓 / 開頭,並且兩個目錄名之間必須只有乙個斜槓 /。最後乙個目錄名(如果存在)不能以 / 結尾。此外,規範路徑必須是表示絕對路徑的最短字串。
示例 1:
輸入:"/home/"
輸出:"/home"
解釋:注意,最後乙個目錄名後面沒有斜槓。
示例 2:
輸入:"/…/"
輸出:"/"
解釋:從根目錄向上一級是不可行的,因為根是你可以到達的最高端。
示例 3:
輸入:"/home//foo/"
輸出:"/home/foo"
解釋:在規範路徑中,多個連續斜槓需要用乙個斜槓替換。
示例 4:
輸入:"/a/./b/…/…/c/"
輸出:"/c"
示例 5:
輸入:"/a/…/…/b/…/c//.//"
輸出:"/c"
示例 6:
輸入:"/a//bc/d//././/…"
輸出:"/a/b/c"
解題思路:本題採用將字串解析成列表,然後去掉多餘元素,再判斷特殊元素的方法,首先將字串一『/』為分隔符解析成列表,然後去掉空元素和『.』元素,之後再判斷特殊字元『…』,若』…『不在開頭,將』…『及其前乙個元素去掉,當』…『在首部,只將』…『去掉。最後返回反斜槓與列表拼接出的字串。**如下:
class
solution
:def
simplifypath
(self, path:
str)
->
str:
s = path.split(
'/')
res =
for i in s:
if i notin[
'','.']
:while
'..'
in res:
idx = res.index(
'..'
)if idx !=0:
res = res[
:idx-1]
+ res[idx+1:
]else
: res.remove(
'..'
)return
'/'+
'/'.join(res)
提交後,通過。 解題思路 leetcode第七十七題 組合
題目描述 給定兩個整數 n 和 k,返回 1 n 中所有可能的 k 個數的組合。示例 輸入 n 4,k 2 輸出 2,4 3,4 2,3 1,2 1,3 1,4 解題思路 本題利用遞迴方法解題,遞迴引數包含t,res,solution。其中t代表遞迴內遍歷的起始位置,res儲存最後的結果列表,sol...
解題思路 leetcode第七十八題 子集
題目描述 給定一組不含重複元素的整數陣列 nums,返回該陣列所有可能的子集 冪集 說明 解集不能包含重複的子集。示例 輸入 nums 1,2,3 輸出 3 1 2 1,2,3 1,3 2,3 1,2 本題與77題十分相似,只是將77的搜尋固定長度改為了不定長度,因此本題採用與77題同樣的解法,主體...
解題思路 leetcode第七十二題 編輯距離
題目描述 給你兩個單詞 word1 和 word2,請你計算出將 word1 轉換成 word2 所使用的最少運算元 你可以對乙個單詞進行如下三種操作 插入乙個字元 刪除乙個字元 替換乙個字元 示例 1 輸入 word1 horse word2 ros 輸出 3 解釋 horse rorse 將 h...