Given an absolute path for a file (Unix-style), simplify it.
For example,
path = "/home/", => "/home"
path = "/a/./b/../../c/", => "/c"
class Solution {
public:
string simplifyPath(string path) {
string res = "";
stack<string> s;
for(int i = 0;i < path.length();i ++){
if(path[i] == '/')
path[i] = ' ';
}
istringstream str(path);
string c;
while(str >> c){
if(c == ".." && !s.empty())
s.pop();
else if(c == "." || (s.empty() && c == ".."))
;
else
s.push(c);
}
if(s.empty())
return "/";
while(!s.empty()){
res = "/" + s.top() + res;
s.pop();
}
return res;
}
};
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".
本文介绍了一个C++实现的方法,用于简化Unix风格的文件路径。通过移除路径中的.和..等元素,确保路径的有效性和简洁性。同时考虑了特殊情况如多个连续的斜杠和起始的'..'情况。
1600

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



