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;
}
};
本文介绍了一个简化文件系统路径字符串的C++算法实现。通过解析输入的路径字符串,并使用栈来处理'..'和'.'等特殊目录,最终返回规范化的绝对路径。文章详细展示了如何遍历路径字符串并进行有效处理。
1603

被折叠的 条评论
为什么被折叠?



