栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

LeetCode 388. 文件的最长绝对路径

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

LeetCode 388. 文件的最长绝对路径

题目链接:文件的最长绝对路径

题解标签:哈希表、前缀和

思路:

        1)文件要么是字符串尾部,要么后面跟着 n

        2)文件或文件夹所在层级为上一个 n 后 t 的个数

        3)文件路径长度为上层文件夹路径长度+文件名长度

        只需要维护一个hash表(数组也可),记录每个层级的文件夹或文件名长度即可。

        e.g.

        

        字符串从前往后遍历

                ①遇到 t ,层级+1

                ②遇到 n ,尝试更新答案,层级置零

                ③其他,当前文件夹或文件名长度+1

代码:leetcode/ProblemThree88LongestAbsoluteFilePath.java at master · 1025100302/leetcode (github.com)

class Solution {
        public int lengthLongestPath(String input) {
            input = input + 'n';
            int ans = 0;
            // 记录每一层的长度
            Map recordMap = new HashMap<>();
            int len = input.length();
            // level表示文件层级,curLen表示当前文件夹名或文件名的长度
            int level = 0, curLen = 0;
            boolean isFile = false;
            for (int i = 0; i < len; i++) {
                char c = input.charAt(i);
                if (c != 'n' && c != 't') {
                    curLen++;
                    if (c == '.') isFile = true;
                } else {
                    // 当前层级的长度等于上一层的长度+1(连接符:/)
                    if (curLen > 0) recordMap.put(level, recordMap.getOrDefault(level - 1, 0) + curLen + 1);
                    if (input.charAt(i) == 'n') {
                        // 只记录文件的路径长度,忽略文件夹的路径长度
                        if (isFile) ans = Math.max(ans, recordMap.get(level));
                        level = 0;
                    } else {
                        level++;
                    }
                    curLen = 0;
                    isFile = false;
                }
            }
            return Math.max(0, ans - 1);
        }
    }

运行结果:
            执行耗时:1 ms,击败了65.17% 的Java用户
            内存消耗:39.4 MB,击败了34.42% 的Java用户

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/821674.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号