LeetCode OJ:Simplify Path

来源:互联网 发布:python开源运维 编辑:程序博客网 时间:2024/06/08 03:34

Simplify Path

 

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".
算法思想:用栈做,注意多种情况

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



0 0
原创粉丝点击