[M模拟] lc71. 简化路径(模拟+栈)

1. 题目来源

链接:71. 简化路径

2. 题目解析

这种模拟加字符串处理问题真的挺吓人的…一定要理清楚思路,一开始这只能面向测试用例编程了…

我觉得笔记写的蛮详细的,配合代码使用更佳!
在这里插入图片描述

  • 时间复杂度 O ( n ) O(n) O(n)
  • 空间复杂度 O ( n ) O(n) O(n)

代码:

class Solution {
    
    
public:
    string simplifyPath(string path) {
    
    
        string res, name;
        if (path.back() != '/') path += '/';
        for (auto c : path) {
    
    
            if (c != '/') name += c;
            else {
    
    
                if (name == "..") {
    
    
                    while (res.size() && res.back() != '/') res.pop_back();
                    if (res.size()) res.pop_back();
                } else if (name != "." && name != "") {
    
    
                    res += '/' + name;
                }
                name.clear();
            }
        }
        if (res.empty()) res = "/";
        return res;
    }
};

猜你喜欢

转载自blog.csdn.net/yl_puyu/article/details/111935681