LeetCode——简化路径(辅助栈)

173 阅读1分钟

题目描述

image.png

image.png

解题思路

核心的解题思路就是借助一个栈来辅助我们,遇到空字符串和一个点的则跳过,遇到两个点的则出栈。

image.png

AC代码

var simplifyPath = function(path) {
    // 简化路径的核心就是借助辅助栈
    const stack = [];
    // 分割字符串
    const strArr = path.split('/');
    // 遇到空字符串和一个点的直接跳过
    // 遇到两个点则出栈
    const res = [];
    for (let v of strArr) {
        if (v.length === 0 || v === '.') {
            continue;
        }
        if (v === '..') {
            stack.pop();
            continue;
        }
        stack.push(v);
    }
    for (let i = 0; i < stack.length; i++) {
        res.push('/');
        res.push(stack[i]);
    }
    return res.length > 0 ? res.join('') : '/'
};

总结

简化路径的本质就是借助栈这个数据结构的特点对不同的情况进行出栈和入栈,最后返回的就是路径的简化结果,遇到空字符串和一个点的都跳过,遇到两个点的则出栈是本题的核心。