加入收藏 | 设为首页 | 会员中心 | 我要投稿 我爱制作网_池州站长网 (https://www.0566zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Unix > 正文

前端算法:简化路径

发布时间:2022-12-09 10:43:07 所属栏目:Unix 来源:
导读:  给你一个字符串 path ,表示指向某一文件或目录的Unix 风格 绝对路径 (以 '/' 开头),请你将其转化为更加简洁的规范路径。

  在 Unix 风格的文件系统中,一个点(.)表示当前目录本身;此外unix
  给你一个字符串 path ,表示指向某一文件或目录的Unix 风格 绝对路径 (以 '/' 开头),请你将其转化为更加简洁的规范路径。
 
  在 Unix 风格的文件系统中,一个点(.)表示当前目录本身;此外unix路径简化,两个点 (..)表示将目录切换到上一级(指向父目录);两者都可以是复杂相对路径的组成部分。任意多个连续的斜杠(即,'//')都被视为单个斜杠 '/' 。 对于此问题,任何其他格式的点(例如,'...')均被视为文件/目录名称。
 
  请注意,返回的 规范路径 必须遵循下述格式:
 
  始终以斜杠 '/' 开头。
 
  两个目录名之间必须只有一个斜杠 '/' 。
 
  最后一个目录名(如果存在)不能 以 '/' 结尾。
 
  此外,路径仅包含从根目录到目标文件或目录的路径上的目录(即,不含 '.' 或 '..')。
 
  返回简化后得到的 规范路径 。
 
  示例 1:
  输入:path = "/home/"
  输出:"/home"
  解释:注意,最后一个目录名后面没有斜杠。
  示例 2:
  输入:path = "/../"
  输出:"/"
  解释:从根目录向上一级是不可行的,因为根目录是你可以到达的最高级。
  示例 3:
  输入:path = "/home//foo/"
  输出:"/home/foo"
  解释:在规范路径中,多个连续斜杠需要用一个斜杠替换。
  示例 4:
  输入:path = "/a/./b/../../c/"
  输出:"/c"
  通过栈来实现简化路径,先使用split的方法在路径分割,在将分割后的路径进行入栈处理,如果遇到..,表示返回上一级,则出栈,最后再通过join将栈中的元素拼接起来,得到简化路径后的结果
 
  var simplifyPath = function(path) {
      let stack=[];
      let str='';
      //将字符串分割
      let arr=path.split('/')
      arr.forEach(val=>{
          //如果是..,表示返回上一级,则出栈
          if(val&&val=='..'){
              stack.pop()
          }else{
              //如果是字符且不是..或.,则入栈
              if(val&&val!='.'){
                  stack.push(val)
              }
          }
      })
      //输出简化路径后的结果
      arr.length?str='/'+stack.join('/'):str='/'
      return str
  };
 

(编辑:我爱制作网_池州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章