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".
class Solution {
public:
string simplifyPath(string path) {
vector<string> simplePath;
auto last = path.end();
for (auto i = path.begin(); i != last; ) {
i++;
auto j = find(i, last, '/');
auto tmp = string(i,j);
if (!tmp.empty() && tmp != ".") {
if (tmp == "..") {
if (!simplePath.empty()) {
simplePath.pop_back();
}
} else {
simplePath.push_back(tmp);
}
}
i = j;
}
string res ;
if (simplePath.empty()) {
return "/";
}
for (auto i : simplePath) {
res += "/" + i;
}
return res;
}
};
本文介绍了一个C++程序,用于简化Unix风格的绝对路径。通过解析输入路径并移除多余的符号如'..'和'.',最终返回规范化的路径字符串。讨论了特殊情况处理,例如连续的斜杠及路径起始为'../'的情况。
1604

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



