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

一、题目
在这里插入图片描述
二、示例

示例一
输入: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("/")

};

五、总结
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值