71. 简化路径(栈)

Posted Harris-H

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了71. 简化路径(栈)相关的知识,希望对你有一定的参考价值。

71. 简化路径 (栈)

这个题意感觉不是很清晰,本质就是要把 . . . . . .. .. 这两个东西简化掉。

可以先用 / / /分隔出数组。

然后模拟栈,遇到 . . .. ..就弹出栈顶,否则遇到 . . .或者空就不管,否则加入栈。

时间复杂度: O ( n ) O(n) O(n)

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;
    
;

以上是关于71. 简化路径(栈)的主要内容,如果未能解决你的问题,请参考以下文章

Leetcode 71 简化路径simplify-path(栈)

Leetcode No.71 简化路径(栈)

Leetcode No.71 简化路径(栈)

LeetCode刷题——简化路径#71#Medium

leetcode 71 简化路径

LeetCode:简化路径71