思路是把除了 非"." 和 ".." 的目录保存下来,如果遇到 "..",向前去掉一个目录。
注意:结尾可能没有 ‘/’
string simplifyPath(string path) {
string ret = "";
vector<string> v;
string s="";
for(int i=0;i<path.size();i++) {
if(path[i] == '/') {
if(s == "..") {
if(!v.empty())
v.pop_back();
} else if(s != "." && s.size() > 0) {
v.push_back(s);
}
s.clear();
} else {
s += path[i];
}
}
if(s.size() > 0) {
if(s == ".." && !v.empty())
v.pop_back();
else if(s!="." && s!="..") {
v.push_back(s);
s.clear();
}
}
if(v.size()==0)
return "/";
for(int i=0;i<v.size();i++) {
ret += '/' + v[i];
}
return ret;
}