C++ | Leetcode C++题解之第71题简化路径

题目:

题解:

cpp 复制代码
class Solution {
public:
    string simplifyPath(string path) {
        auto split = [](const string& s, char delim) -> vector<string> {
            vector<string> ans;
            string cur;
            for (char ch: s) {
                if (ch == delim) {
                    ans.push_back(move(cur));
                    cur.clear();
                }
                else {
                    cur += ch;
                }
            }
            ans.push_back(move(cur));
            return ans;
        };

        vector<string> names = split(path, '/');
        vector<string> stack;
        for (string& name: names) {
            if (name == "..") {
                if (!stack.empty()) {
                    stack.pop_back();
                }
            }
            else if (!name.empty() && name != ".") {
                stack.push_back(move(name));
            }
        }
        string ans;
        if (stack.empty()) {
            ans = "/";
        }
        else {
            for (string& name: stack) {
                ans += "/" + move(name);
            }
        }
        return ans;
    }
};
相关推荐
mit6.82413 小时前
一些C++的学习资料备忘
开发语言·c++
上去我就QWER14 小时前
深入解析Qt中的QDrag:实现灵活的拖放交互
c++·qt
ALex_zry14 小时前
深入解析gRPC C++动态反射:实现Proto消息的智能字段映射
开发语言·c++
沙威玛_LHE14 小时前
C++ 头文件:语言功能的 “模块化工具箱”(第三章)
c++
liu****14 小时前
12.线程同步和生产消费模型
linux·服务器·开发语言·c++·1024程序员节
顺顺 尼14 小时前
了解和使用多态
c++
0x000714 小时前
翻译《The Old New Thing》- 为什么 SHFormatDateTime 要接收一个未对齐的 FILETIME?
c++·windows
Pointer Pursuit15 小时前
C++——二叉搜索树
开发语言·c++
澪吟15 小时前
C++ 从入门到进阶:核心知识与学习指南
开发语言·c++
_OP_CHEN16 小时前
算法基础篇:(四)基础算法之前缀和
c++·算法·前缀和·蓝桥杯·acm·icpc·算法竞赛