一、题目
二、示例
示例一
输入: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("/")
};
五、总结
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/weixin_47450807/article/details/123250857
内容来源于网络,如有侵权,请联系作者删除!