美文网首页
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