class Solution {
public:
string simplifyPath(string path) {
int n=path.size();
vector<string> paths;
int i,j;
for(i=0;i<n;i++)
{
string tmp="";
while(i<n&&path[i]!='/')
{
tmp+=path[i];
i++;
}
if(tmp==".")
continue;
else if(tmp==""&&!paths.empty())
continue;
else if(tmp=="..")
{
if(!paths.empty()&&!(paths.size()==1&&paths[0]==""))
paths.pop_back();
}
else
paths.push_back(tmp);
}
if(paths.size()==0||(paths.size()==1&&paths[0]==""))
return "/";
string ans=paths[0];
for(i=1;i<paths.size();i++)
{
ans+="/";
ans+=paths[i];
}
return ans;
}
};
update:
class Solution {
public:
string simplifyPath(string path) {
int n=path.size();
vector<string> paths;
int i,j;
for(i=0;i<n;)
{
while(i<n&&path[i]=='/')
i++;
string tmp="";
while(i<n&&path[i]!='/')
{
tmp+=path[i];
i++;
}
if(tmp==".."&&paths.size()!=0)
paths.pop_back();
else if(tmp!=""&&tmp!="."&&tmp!="..")
paths.push_back(tmp);
}
string ans="";
if(paths.size()==0)
return "/";
for(i=0;i<paths.size();i++)
{
ans+="/"+paths[i];
}
return ans;
}
};