Leetcode71. Simplify Path简化路径

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

例如,

path = "/home/", => "/home"

path = "/a/./b/../../c/", => "/c"

边界情况:

  • 你是否考虑了 路径 = "/../" 的情况?

在这种情况下,你需返回 "/" 。

  • 此外,路径中也可能包含多个斜杠 '/' ,如 "/home//foo/" 。

在这种情况下,你可忽略多余的斜杠,返回 "/home/foo" 。

这道题的要求是简化一个Unix风格下的文件的绝对路径。

字符串处理,".."是返回上级目录(如果是根目录则不处理),重复连续出现的'/',只按1个处理, 如果路径名是".",则不处理;

class Solution {
public:
    string simplifyPath(string path)
    {
        int len = path.size();
        string str = "";
        stack<string> q;
        for(int i = 0; i < len; i++)
        {
            if(i == len - 1 && path[i] != '/')
                str += path[i];
            if(path[i] == '/' && str == "")
                continue;
            else if(path[i] ==  '/' || i == len - 1)
            {
                if(str == "..")
                {
                    if(!q.empty())
                        q.pop();
                }
                else if(str == ".")
                {

                }
                else
                {
                    q.push(str);
                }
                str = "";
            }
            else
                str += path[i];
        }
        string res = "";
        while(!q.empty())
        {
            res = q.top() + res;
            res = "/" + res;
            q.pop();
        }
        if(res == "")
            return "/";
        return res;
    }
};

原文地址:https://www.cnblogs.com/lMonster81/p/10433859.html