zoukankan      html  css  js  c++  java
  • LeetCode:Simplify Path

    题目链接

    Given an absolute path for a file (Unix-style), simplify it.

    For example,
    path = "/home/", => "/home"
    path = "/a/./b/../../c/", => "/c"

    Corner Cases:

    • Did you consider the case where path = "/../"?
      In this case, you should return "/".
    • Another corner case is the path might contain multiple slashes '/' together, such as "/home//foo/".
      In this case, you should ignore redundant slashes and return "/home/foo".

    分析:需要注意的是/…可以表示名字为…的路径,路径的最后可能没有/。可以利用栈,碰到正常路径压入栈中,碰到/.不作任何操作,碰到/..删除栈顶元素。下面代码中用数组来模拟栈                                                                                  本文地址

    class Solution {
    public:
        string simplifyPath(string path) {
            int len = path.size();
            vector<string> vec;
            int i = 0, index = 0;
            while(i < len)
            {
                int j = path.find('//', i + 1);
                string tmp;
                if(j != string::npos)
                    tmp = path.substr(i, j - i);
                else {tmp = path.substr(i, len); j = len;}
            
                if(tmp == "/");
                else if(tmp == "/.");
                else if(tmp == "/..")
                    {if(!vec.empty())vec.pop_back();}
                else 
                    vec.push_back(tmp);
                i = j;
            }
            if(vec.empty())return "/";
            else 
            {
                string res;
                for(int i = 0; i < vec.size(); i++)
                    res += vec[i];
                return res;
            }
        }
    }; 

    【版权声明】转载请注明出处http://www.cnblogs.com/TenosDoIt/p/3465328.html

  • 相关阅读:
    题解:艾米利亚的魔法
    tarjan求割点
    集合删数
    小测题解
    [考试]20141028
    铺地毯
    [考试]20141027
    大家好
    【DM642学习笔记一】关于Can't Initialize Target CPU的一种解决方法 : Error 0x80000240
    iOS开发之获取系统相册ALAssetLibrary
  • 原文地址:https://www.cnblogs.com/TenosDoIt/p/3465328.html
Copyright © 2011-2022 走看看