简化Unix下的路径。".."表示上一层,"."表示当前目录。
简单的方法是把/划分的各个部分(文件名)放入数组A中,然后把其中元素(文件名)按照规则放入另一数组B。遇到“..”就删除B尾部文件名,遇到“.”跳过,其余放入B尾部。
class Solution {
public:
string simplifyPath(string path) {
string res;
vector<string> lst;
string tmp = "";
for(int i=1;i<path.length();++i){
if(path[i]=='/'&&path[i-1]!='/'){
lst.push_back(tmp);
tmp="";
}
else if(path[i]!='/'){
tmp.push_back(path[i]);
}
}
if(tmp!="")
lst.push_back(tmp);
vector<string> lst2;
for(int i=0;i<lst.size();++i){
if(lst[i]==".."){
if(!lst2.empty())
lst2.pop_back();
}
else if(lst[i]!=".")
lst2.push_back(lst[i]);
}
if(lst2.empty())
return "/";
for(int i=0;i<lst2.size();++i){
res+="/";
res+=lst2[i];
}
return res;
}
};