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 {};在 GitHub 上查看题目所在目录:lmliheng/algorithm