给定一个文档 (Unix-style) 的完全路径,请进行路径简化。

例如,
path = "/home/", => "/home"
path = "/a/./b/../../c/", => "/c"

边界情况:

你是否考虑了 路径 = "/../" 的情况? 在这种情况下,你需返回 "/" 。 此外,路径中也可能包含多个斜杠 '/' ,如
"/home//foo/" 。 在这种情况下,你可忽略多余的斜杠,返回 "/home/foo" 。

解决的思路很简单,用栈来解决。正常的路径入栈,‘..’出栈,‘.’忽略

/**
 * @param {string} path
 * @return {string}
 */
var simplifyPath = function(path) {
    var result = ''  
    var tempPath = []
    var paths = path.split('/')
    paths.map(val => {
        if(val && val === '..') {
            tempPath.pop()
        }else if(val && val !== '.') {
            tempPath.push(val)
        }
    })
    tempPath.length ? result = '/'+tempPath.join('/') : result = '/'
    return result
};

geology
176 声望6 粉丝

自学前端