LeetCode 71. Simplify Path
2014-07-13 09:21
330 查看
以'/'切分路径,用vector<string> ret保存每一级的文件名;
当前文件名为"."时,忽略;
当前文件名为".."时,若未到达根目录,则ret.pop_back(), 反之忽略;
其他情况都ret.push_back( filename ).
代码:
class Solution
{
public:
string simplifyPath(string path)
{
vector<string> dir;
string ret;
dir.push_back("/");
for (size_t begin, end=0; ; )
{
for (begin=end+1 ; begin<path.size() && path[begin]=='/'; ++ begin) {}
if (begin >= path.size())
{
break;
}
end = path.find('/', begin);
end = end!=string::npos? end: path.size();
auto cur = path.substr(begin, end-begin);
if (cur!="." && cur!="..")
{
dir.push_back(cur + "/");
} else if (cur==".." && dir.size()>1)
{
dir.pop_back();
}
}
for (size_t i = 0; i < dir.size(); ++ i)
{
if (i==0 || i!=dir.size()-1)
{
ret += dir[i];
} else
{
ret += dir[i].substr(0, dir[i].size()-1); // no slash
}
}
return ret;
}
};
当前文件名为"."时,忽略;
当前文件名为".."时,若未到达根目录,则ret.pop_back(), 反之忽略;
其他情况都ret.push_back( filename ).
代码:
class Solution
{
public:
string simplifyPath(string path)
{
vector<string> dir;
string ret;
dir.push_back("/");
for (size_t begin, end=0; ; )
{
for (begin=end+1 ; begin<path.size() && path[begin]=='/'; ++ begin) {}
if (begin >= path.size())
{
break;
}
end = path.find('/', begin);
end = end!=string::npos? end: path.size();
auto cur = path.substr(begin, end-begin);
if (cur!="." && cur!="..")
{
dir.push_back(cur + "/");
} else if (cur==".." && dir.size()>1)
{
dir.pop_back();
}
}
for (size_t i = 0; i < dir.size(); ++ i)
{
if (i==0 || i!=dir.size()-1)
{
ret += dir[i];
} else
{
ret += dir[i].substr(0, dir[i].size()-1); // no slash
}
}
return ret;
}
};
相关文章推荐
- Leetcode-71. Simplify Path
- Leetcode 71. Simplify Path
- LeetCode 71. Simplify Path
- Leetcode:71. Simplify Path
- Leetcode 71. Simplify Path
- leetcode: 71. Simplify Path
- leetcode-71. Simplify Path
- leetcode 71. Simplify Path
- Leetcode 71. Simplify Path
- Leetcode 71. Simplify Path
- LeetCode 71. Simplify Path
- LeetCode 71. Simplify Path
- leetcode 71. Simplify Path
- Leetcode 71. Simplify Path
- Leetcode: Simplify Path
- LeetCode | Simplify Path
- LeetCode71 Simplify Path
- LeetCode : Simplify Path
- Leetcode: Simplify Path
- LeetCode: Simplify Path