题目描述
你是一位系统管理员,手里有一份文件夹列表 folder,你的任务是要删除该列表中的所有 子文件夹,并以 任意顺序 返回剩下的文件夹。
如果文件夹 folder[i] 位于另一个文件夹 folder[j] 下,那么 folder[i] 就是 folder[j] 的 子文件夹 。
文件夹的「路径」是由一个或多个按以下格式串联形成的字符串:‘/’ 后跟一个或者多个小写英文字母。
例如,“/leetcode” 和 “/leetcode/problems” 都是有效的路径,而空字符串和 “/” 不是。
示例
思路
先将数组进行排序,子文件夹一定在主文件夹后边,且后边的字符已定位“/”
代码
class Solution {
public List<String> removeSubfolders(String[] folder) {
Arrays.sort(folder);
List<String> fathers = new ArrayList<>();
int i = 0;
while (i < folder.length) {
fathers.add(folder[i]);
int k = i + 1;
String dir = folder[i] + "/";
while (k < folder.length && folder[k].startsWith(dir)) {
k++;
}
i = k;
}
return fathers;
}
}