Skip to content

71. 简化路径 ​

  • 题号:71
  • 来源:LeetCode
  • 难度:中等
  • 标签:栈 字符串
  • 语言:TypeScript
  • 解法:1 个
  • 作者:lmliheng
  • 最近更新:2026-09-27

TypeScript · O(n^2) 时间 · O(n) 空间 · 更新于 2026-09-27

斜杠切分后扫描,遇上一级目录就删掉前一项

typescript
/**
 * @difficulty medium
 * @tags 栈,字符串
 * @time O(n^2)
 * @space O(n)
 * @note 斜杠切分后扫描,遇上一级目录就删掉前一项
 * @71. 简化路径
 */

/**
 * @param {string} path
 * @return {string}
 */
function simplifyPath(path: string): string {
    let pathArr: string[] = path.split("/")
    // . 和 //可以处理
  //  console.log(pathArr)
    let pathArr_1: string[] = pathArr.filter(item => {
    if(item !== "" && item !== "."){
        return item
    }
  }) as string[]
  // 处理/../

  for(let i = 0; i < pathArr_1.length; i++){
    if(pathArr_1[i] === '..' ){
        console.log(pathArr_1)
        if(pathArr_1[i-1] !== undefined){
            pathArr_1.splice(i-1, 2)
            console.log("删除后", pathArr_1)
            // 需要更新i
            i = i - 2
        } else {
            pathArr_1.splice(i, 1)
            i = i - 1
        }
    }
  }

  return '/' + pathArr_1.join('/')
}

// console.log(simplifyPath("./home/../foo/"))
// console.log(simplifyPath('/home//foo/'))
// console.log(simplifyPath("/home/user/Documents/../Pictures"))
// console.log(simplifyPath("/.../a/../b/c/../d/./"))
// console.log(simplifyPath("/../"))

//console.log(simplifyPath('/a/./b/../../c/'))
console.log(simplifyPath('/home/../../..'))

export {};

源码:ts/leetcode/71. 简化路径.ts


在 GitHub 上查看题目所在目录:lmliheng/algorithm