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".
string simplifyPath(string path) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
assert(path[0]=='/');
vector<string> vec;
int i = 0;
while(i < path.size())
{
int end = i+1;
while(end < path.size() && path[end] != '/')
end++;
string sub = path.substr(i+1,end-i-1);
if(sub.length()>0){
if(sub == ".."){
if(!vec.empty()) vec.pop_back();
}
else if(sub != ".")
vec.push_back(sub);
}
i=end;
}
if(vec.empty())return "/";
string res;
for(int i = 0; i< vec.size(); i++)
res += "/" + vec[i];
return res;
}

本文介绍了一个C++函数,用于简化Unix风格的绝对路径。通过解析输入路径并移除多余的符号如'..'和'.',该函数返回一个规范化的路径字符串。
1586

被折叠的 条评论
为什么被折叠?



