Leetcode刷题(第71题)——简化路径

x33g5p2x  于2022-03-03 转载在 其他  
字(0.8k)|赞(0)|评价(0)|浏览(246)

一、题目

二、示例

示例一
输入:path = "/home/"
输出:"/home"
解释:注意,最后一个目录名后面没有斜杠。 

示例二
输入:path = "/../"
输出:"/"
解释:从根目录向上一级是不可行的,因为根目录是你可以到达的最高级。

示例三
输入:path = "/home//foo/"
输出:"/home/foo"
解释:在规范路径中,多个连续斜杠需要用一个斜杠替换。

示例四
输入:path = "/a/./b/../../c/"
输出:"/c"

三、思路
本题采用栈这种数据结构来解题,首先应该先将字符串进行切割为数组,如果遇到"",则直接继续下一个。如果遇到..,则再进行判断是否栈中还存在元素,如果存在,则弹出栈顶元素,如果不存在,则继续下一个。剩下的就都是字符串了,此时直接将其push入栈中即可。最后再将栈中的元素拼接起来。
四、代码解析

/**
 * @param {string} path
 * @return {string}
 */
var simplifyPath = function (path) {
    let arr = path.split("/")
    let newArr = []
    arr.forEach(item => {
        if (item === "" || item === ".") {
            return
        } else if (item === "..") {
            if (newArr.length > 0) {
                newArr.pop()
            }else {
                return
            }
        } else {
            newArr.push(item)
        }
    })
    return "/" + newArr.join("/")

};

五、总结

相关文章