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

力扣每日一题2022-04-20中等题:文件的最长绝对路径

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

力扣每日一题2022-04-20中等题:文件的最长绝对路径

文件的最长绝对路径
    • 题目描述
    • 思路
      • 模拟
        • Python实现
        • Java实现


题目描述

文件的最长绝对路径


思路 模拟

按换行符分割输入,根据该行的前缀tab数量确认该文件或目录属于哪一级,用哈希表记录之前遍历的长度,在遇到文件的’.'时统计答案即可

Python实现
class Solution:
    def lengthLongestPath(self, input: str) -> int:
        record, ans = defaultdict(int), 0
        for line in input.split("n"):
            # level, line = more_itertools.ilen(takewhile(lambda x: x == 't', line)), line.replace("t","")
            level, line = sum(1 for _ in takewhile(lambda x: x == 't', line)), line.replace("t","")
            record[level] = len(line)
            if '.' in line:
                ans = max(ans, sum(record[i] for i in range(level + 1)) + level)
        return ans
Java实现
class Solution {
    public int lengthLongestPath(String input) {
        Map map = new HashMap<>();
        int ans = 0, n = input.length();
        for(int i = 0, cur = 0; i < n; i++) {
            int level = 0;
            while(i < n && input.charAt(i) == 't') {
                level++;
                i++;
            }
            int len = 0;
            boolean isFile = false;
            while(i < n && input.charAt(i) != 'n') {
                len++;
                if(input.charAt(i++) == '.')
                    isFile = true;
            }
            map.put(level, len);
            if(isFile) {
                int sum = 0;
                for(int j = 0; j <= level; j++)
                    sum += map.getOrDefault(j, 0);
                ans = Math.max(ans, sum + level);
            }
        }
        return ans;
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/821663.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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