美文网首页
Longest Absolute File Path结题报告

Longest Absolute File Path结题报告

作者: 黑山老水 | 来源:发表于2017-08-06 04:39 被阅读27次

Link:

https://leetcode.com/problems/longest-absolute-file-path/description/

解题方法:

当读到一个子目录或者一个文件时,要记录当前的长度,必然要知道这个上一级的长度。
而根据题意可知,给出的字符串实际是将一个目录树先序遍历产生的。也就是说如果我们用一个哈希(代表level 到 这个level的长度的映射)来记录每层的长度,当需要计算当前层数的长度时,只需要找hash[level - 1]即可,因为当我们要计算hash[level]时候,hash[level-1]一定会在之前被更新为对应的上一层长度。

Mistake:

最后不要忘记把路劲中的'/'算进去。

Time Complexity:

O(N)

完整代码:

int lengthLongestPath(string input) 
    {
        int maxLen = 0;
        int currLevel = 0;
        unordered_map <int, int> hash;
        hash[-1] = 0;
        string curr;
        bool isFile = false;
        for(int i = 0; i <= input.size(); i++)
        {
            if(input[i] == '\n' || i == input.size())
            {
                int currLen = curr.size() + hash[currLevel - 1] + 1;
                curr.clear();
                hash[currLevel] = currLen;
                currLevel = 0;
                if(isFile)
                    maxLen = currLen > maxLen ? currLen : maxLen;
                isFile = false;
            }
            else
            {
                if(input[i] == '\t')
                {
                    currLevel++;
                    continue;
                }
                if(input[i] == '.')
                    isFile = true;
                curr += input[i];
            }
        }
        return maxLen > 0 ? maxLen - 1 : 0;
    }

相关文章

网友评论

      本文标题:Longest Absolute File Path结题报告

      本文链接:https://www.haomeiwen.com/subject/okhglxtx.html