你是一位系统管理员,手里有一份文件夹列表 folder,你的任务是要删除该列表中的所有 子文件夹,并以 任意顺序 返回剩下的文件夹。
我们这样定义「子文件夹」:
如果文件夹 folder[i] 位于另一个文件夹 folder[j] 下,那么 folder[i] 就是 folder[j] 的子文件夹。
文件夹的「路径」是由一个或多个按以下格式串联形成的字符串:
/ 后跟一个或者多个小写英文字母。
例如,/leetcode 和 /leetcode/problems 都是有效的路径,而空字符串和 / 不是。
输入:folder = ["/a","/a/b","/c/d","/c/d/e","/c/f"]
输出:["/a","/c/d","/c/f"]
解释:"/a/b/" 是 “/a” 的子文件夹,而 “/c/d/e” 是 “/c/d” 的子文件夹。
解题:首先进行排序操作,然后判断后面是否含有’/‘
具体代码如下
class Solution {
public:
vector<string> removeSubfolders(vector<string>& folder) {
if(folder.empty())
{
return {};
}
sort(folder.begin(),folder.end());
vector<string> rst(1,folder[0]);//创建一个string的vector,初始化长度为1,且存储的为folder[0]
for(int i=1;i<folder.size();i++)
{
if(folder[i].compare(0,rst.back().length())!=0||
folder[i][rst.back()]!='/')
{
rst.push_back(folder[i]);
}
}
return rst;
}
};