Simplify Path
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"
.
Tips:
Need to practice more.
Solution:class Solution {
public:
string simplifyPath(string path) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
vector<string> result;
string tmp;
for(int i=0;i<path.size();++i){
if(path[i]!='/')
tmp+=path[i];
if(path[i]=='/'||i==path.size()-1){
if(tmp.empty())
continue;
if(tmp.compare("..")==0){
if(!result.empty())
result.pop_back();
}else if(tmp.compare(".")!=0){
result.push_back(tmp);
}
tmp.clear();
}
}
string str;
for(int i=0;i<result.size();++i){
str+='/';
str+=result[i];
}
return str.empty()?"/":str;
}
};