题意是要我们处理好输入路径的跳转,既要考虑”/..“和”/.“的情况来最简化路径。 维护一个栈来保存所有的输入路径。当一个路径是..的时候弹出栈顶即返回上一层路径。最后按照栈的顺序输出即可。
class Solution {
public:
string simplifyPath(string path) {
path += '/';
stack<string> save;
string tmp="";
for( int i=0;i<path.size();i++ )
{
if( path[i] == '/' )
{
if( tmp == ".." )
{
if( !save.empty() )
{
save.pop();
}
}
else if( tmp != "." && tmp != "" )
{
save.push(tmp);
}
tmp = "";
}
else
{
tmp += path[i];
}
}
if( save.empty() )
{
return "/";
}
string res = "";
while( !save.empty() )
{
res = '/'+save.top()+res;
save.pop();
}
return res;
}
};