简化文件的绝对路径 Simpify Path

来源:互联网 发布:python 技术指标 编辑:程序博客网 时间:2024/04/30 09:42

在操作系统中,每个文件都有一个绝对路径。并且其最简化的形式是唯一的。对于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;            }};


0 0
原创粉丝点击