Simplify Path

来源:互联网 发布:淘宝卖的猛犸象牙猫腻 编辑:程序博客网 时间:2024/06/09 19:48

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

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



0 0
原创粉丝点击