码迷,mamicode.com
首页 > 其他好文 > 详细

leetcode || 71、Simplify Path

时间:2015-04-09 10:39:36      阅读:106      评论:0      收藏:0      [点我收藏+]

标签:path   unix   leetcode   string   算法   

problem:

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

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

click to show corner cases.

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".

Hide Tags
 Stack String
题意:简化Unix风格路径

thinking:

提示使用stack来做

code:

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

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



leetcode || 71、Simplify Path

标签:path   unix   leetcode   string   算法   

原文地址:http://blog.csdn.net/hustyangju/article/details/44954983

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!