您的位置:首页 > 其它

简化文件的绝对路径 Simpify Path

2014-02-23 14:37 204 查看
在操作系统中,每个文件都有一个绝对路径。并且其最简化的形式是唯一的。对于Unix系列系统,绝对路径是从根路径/开始的,用正斜杠表示。一个句点.表示当前路径,两个句点..表示上一级路径。对于一个路径字符串,从左到右依次读。

下面的程序是用来简化Unix文件系统的路径字符串,使其达到最简化的程序,取出中间多余的/或者重复的层次进出。

思想:用一个栈来维护绝对路径中从根到文件的纯净的层次次序,去除重复的部分。

代码:

class Solution {
public:
string simplifyPath(string path) { //absolute path
stack<string> s;

int len = path.length();
int i = 0;
string tmp;
while(i < len)
{
//pass /
while(i < len && path[i] == '/')
i++;

// read directory-name
tmp.clear();
while(i < len && path[i] != '/')
{
tmp += path[i];
i++;
}

// get in or get out
if(tmp == "..")
{
if(!s.empty())
s.pop();
}
else if(tmp == ".")
continue;
else if(!tmp.empty())
{
s.push(tmp);
}
}

if(s.empty())
return string("/");
string result = "";
while(!s.empty())
{
result = "/" + s.top() + result;
s.pop();
}
return result;

}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: