
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>st; string name = ""; path.append(1,'/'); for(int i=0; i<path.size(); i++){ if(path[i] == '/'){ if(name.size() != 0){ if(name == "."){} else if(name == ".."){ if(!st.empty())st.pop(); } else{ st.push(name); } name = ""; } } else{ name += path[i]; } } string res = ""; if(st.empty()) return "/"; while(!st.empty()){ res = "/"+ st.top() + res; st.pop(); } return res; }




近期评论