js寻找文件父目录路径

11 篇文章 0 订阅

题目

在一组文件路径集合中,找出那些存在子路径的集合并返回。
说明:
1.每个路径只由 / 和 小写字母结合,且不会出现多个 / 重叠的情况。
2.以 / 开头,不以 / 结尾,而且不会出现单个的 /,都会组合字母。
3.输出结果需要与原输入顺序一致

例1:
输入:'/a,/a/b,/a/c,/b/c,/b/c/d,/b/cf'
输出:'/a,/b/c'
解释:因为有 /a 及 /a/b,所以 /a 是文件夹。
      因为有 /b/c 及 /b/c/d,所以 /b/c 是文件夹。/b 不存在于输入集合中

例2:
输入:'/a/c,/a/d,/x/y/z/b,/x/y,/x/y/z'
输出:'/x/y,/x/y/z'
解释:因为有 /x/y 及 /x/y/z,所以 /x/y 是文件夹。同理也有 /x/y/z/b,
      所以 /x/y/z 也是文件夹。有 /a/c /a/d,但没有 /a,所以 /a 不是文件夹。

例3:
输入:'/a/b,/a/c,/b/c,/b/c/d/e,/b/ef'
输出:'/b/c'
解释:因为 /b/c 及 /b/c/d/e,所以 /b/c 是文件夹。不存在 /a 和 /b,所以这两个都不是文件夹。

例4:
输入:'/b/c,/b/cf'
输出:''

测试例子:
1.输入:'/a,/a/b,/a/c,/b/c,/b/c/d,/b/cf'。 输出:'/a,/b/c'
2.输入:'/a/c,/a/d,/x/y/z/b,/x/y,/x/y/z'。输出:'/x/y,/x/y/z'
3.输入:'/a/b,/a/c,/b/c,/b/c/d/e,/b/ef'。输出:'/b/c'
4.输入:'/b/c,/b/cf'。输出:''
5.输入:'/a'。输出:''
6.输入:'/b,/b/c,/b/c/f',输出:'/b,/b/c'
7.输入:'/x/y/a/b,/x/y/a,/x/y',输出:'/x/y/a,/x/y'
8.输入:'/',输出:''
9.输入:'//',输出:''
10.输入:'/a/c/b,/a/b,/a/c,/a,/b/c,/b/c/d,/b/cf' 输出:'/a/c,/a,/b/c'
11.输入:'/a/d,/x/a/d/y',输出: ''

function find(str) {

}

JS代码

function find(str) {
    let strArr = str.split(',');
    let tempArr = [...strArr];
    let ans = [];

    strArr = strArr.sort(function(a,b) {
        return (a.length - b.length);
    })

    if (!(strArr.length > 1)) {
          return '';
    }

    for(let i=0, j=strArr.length-2; i<j; i++) {
          let lastItem = strArr.pop();
          let temp = strArr.filter(item => {
                let notEqual = item.split('/').length !== lastItem.split('/').length;
                return notEqual && lastItem.includes(item);
          })

          ans = [... new Set([...ans, ...temp])];     
    }

    return tempArr.filter(item => {
        return ans.includes(item);
    }).join(',');

}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值