Leetcode Longest Absolute File Path

来源:互联网 发布:台湾美女网络走红 编辑:程序博客网 时间:2024/06/10 15:49

题意:给出先序遍历的所有文件路径,求出其中字符串长度最大的文件路径。

思路:问题的关键是记录从根目录到文件的路径长度,这里使用了递推的方式,记录到叶子结点的路径上,每一个 结点的字符串长度。

class Solution {public:    int lengthLongestPath(string input) {        vector<int> level(200, 0);        int templevel = 0;        string temps;                int re = 0;        for(int i = 0; i < input.length(); ++ i) {            templevel = 0;            bool isFile = false;            temps = "";            while(input[i] != '\n' && i < input.length()) {                if(input[i] == '\t') templevel ++;                else temps += input[i];                if(input[i] == '.') isFile = true;                i ++;            }            //cout << templevel << " " << temps << endl;                        //initialize the root file            if(templevel == 0) {                level[templevel] = temps.length();                if(isFile) re = temps.length();                continue;            }            //cout << "isFile" << isFile << endl;            if(isFile) {                if(re < level[templevel - 1] + temps.length() + 1)                     re = level[templevel - 1] + temps.length() + 1;                                   // cout << level[templevel - 1] + temps.length() + 1;            }            else {                level[templevel] = level[templevel - 1] + temps.length() + 1;                //cout << level[templevel] << endl;            }                    }                return re;    }};

转义字符虽然显示两个字符,但是实际只占一个字符的存储空间。

这题本来想用并查集做,将所有路径都记录下来,但是只要最大值的话,没有必要全部记录。这题本质上还是一道搜索题。

0 0
原创粉丝点击