去除所有的斜杠,把剩余的文件夹名放到vector里面遍历,是.就直接删掉,是..就删掉它和它前面的文件夹(如果有的话),然后再接上斜杠即可。
class Solution {
public:
void print(vector<string>v)
{
for(int i = 0;i<v.size();i++) cout<<v[i]<<" ";
cout<<endl;
}
string simplifyPath(string path) {
vector<string>v;
for(int i = 0;i<path.size();i++)
{
if(path[i] == '/') path[i] = ' ';
}
stringstream ss(path);
string s;
while(ss>>s)
{
v.push_back(s);
}
for(int i = 0;!v.empty()&&i<v.size();i++)
{
if(v[i] == ".")
{
v.erase(v.begin()+i);
i--;
}
else if(v[i] == "..")
{
v.erase(v.begin()+i);
i--;
if(i>=0)
{
v.erase(v.begin()+i);
i--;
}
}
}
s = "/";
for(int i = 0;i<v.size();i++)
{
if(!i) s += v[i];
else s += "/"+ v[i];
}
return s;
}
};