原題鏈接:
https://leetcode.cn/problems/remove-sub-folders-from-the-filesystem/
理解題意:
- 雖然題目例子中的
folder
都是排序的肴裙,但實際上該題并不保證這一點 - 例如
"/leetcode"
和"/leetcode/problems"
,子文件夾的條件為"/leetcode/problems".match(new RegExp("^/leetcode"))
解題思路:
- 首先涌乳,將
folder
用sort
方法排序蜻懦,默認(rèn)排序順序為按字母升序 - 排序后的
folder[0]
必然是一個父文件夾 - 創(chuàng)建一個數(shù)組
result
,存儲所有父文件夾 - 由于
folder
是排序的夕晓,因此遍歷folder
時宛乃,只需要判斷folder[i]
是否為result[result.length - 1]
的子文件夾即可
/**
* @param {string[]} folder
* @return {string[]}
*/
var removeSubfolders = function(folder) {
folder.sort() // 將folder排序
let result = [folder[0]] // `folder[0]`必然是一個父文件夾
for (let i = 1; i < folder.length; i++) {
// 如果folder[i]不是result[result.length - 1]的子文件夾,就將其存入結(jié)果
// 由于已經(jīng)排序,folder[i]只需要考慮和result[result.length - 1]的關(guān)系即可
if (!folder[i].match(new RegExp(`^${result[result.length - 1]}/`))) {
result.push(folder[i])
}
}
return result
};