zoukankan      html  css  js  c++  java
  • 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;
        }
    };
    
    
  • 相关阅读:
    POJ
    FZU
    HDU
    HDU
    HDU
    HDU
    Educational Codeforces Round 84 E. Count The Blocks
    B Boundary(由弦求圆)
    D. Maximum Sum on Even Positions(翻转1次,求最大偶数位和)
    E. DeadLee(思维,拓扑图处理)
  • 原文地址:https://www.cnblogs.com/lMonster81/p/10433859.html
Copyright © 2011-2022 走看看