Longest Absolute File Path结题报告

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;
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,789评论 0 33
  • Suppose we abstract our file system by a string in the fo...
    Jeanz阅读 187评论 0 0
  • LeetCode 刷题随手记 - 第一部分 前 256 题(非会员),仅算法题,的吐槽 https://leetc...
    蕾娜漢默阅读 17,984评论 2 36
  • 第一章 Nginx简介 Nginx是什么 没有听过Nginx?那么一定听过它的“同行”Apache吧!Ngi...
    JokerW阅读 32,833评论 24 1,002
  • 按蚂蚁班算法,本人未满十八岁,是青春无敌美少女,是在群里不太发言的喝水吃瓜群众,是跑量与全马成绩平平的跑渣。 呃,...
    qxydd阅读 737评论 3 2