你是一位系统管理员,手里有一份文件夹列表 folder
,你的任务是要删除该列表中的所有 子文件夹,并以 任意顺序 返回剩下的文件夹。
如果文件夹 folder[i]
位于另一个文件夹 folder[j]
下,那么 folder[i]
就是 folder[j]
的 子文件夹 。
文件夹的「路径」是由一个或多个按以下格式串联形成的字符串:'/' 后跟一个或者多个小写英文字母。
- 例如,
"/leetcode"
和"/leetcode/problems"
都是有效的路径,而空字符串和"/"
不是。
字符串比较,a/b/c ; a/b/c/d ; a/b/d 这是有序的3个字符串,比较是当找到第一个不同的字符就返回结果,所以有前缀关系的,在有序数组中距离更近。
两头的 a/b/c 和 a/b/d 没有前缀关系,a/b/c的子文件夹都一定在 a/b/d之前。
根据字符串的比较规则,一个文件夹的父文件夹如果存在,在有序列表中,一定是最后一个没有父文件夹的文件夹。
定义一个数组存结果,结果都是没有父文件夹的,结果的子文件夹一定出现在它之后,并且在下一个结果出现之前。
附上代码,这个博客不支持语言:typescript
不过跟js比,除了函数定义那块儿,剩下部分没区别
function removeSubfolders(folder: string[]): string[] { folder.sort(); let result=[folder[0]]; for(let i=1;i<folder.length;i++){ if(!folder[i].startsWith(result[result.length-1]+'/')){ result.push(folder[i]); } } return result; };
标签:string,删除,结果,文件夹,let,字符串,folder From: https://www.cnblogs.com/nsyglpc/p/17100629.html