关闭

leetcode_388 Longest Absolute File Path

标签: leetcode388找文件路劲的最大长度绝对路径最大长度C++
815人阅读 评论(0) 收藏 举报
分类:
  • 题目分析

    给定一个字符串,表示文件系统的目录结构。统计该目录结构中的一个文件的绝对路径的最大长度。

  • 解题思路

    利用\n来分割文件夹和文件名,利用\t来统计此时文件夹或文件对应的层数,然后利用哈希表来建立深度和当前深度的绝对路径长度之间的映射。

  • 实现程序

int lengthLongestPath(string input)
{
    int result = 0;
    int size = input.size();
    int level = 0;
    map<int, int> mp;
    mp.insert(make_pair(0, 0));
    for (int i = 0; i < size; i++)
    {
        int start = i;
        // 用于统计文件夹或文件名长度
        while (i < size && input[i] != '\n' && input[i] != '\t')
            i++;
        if (i >= size || input[i] == '\n')
        {
            // 分割文件夹名和文件名
            string t = input.substr(start, i - start);
            // 包含点,则说明是文件,此时更新长度
            if (t.find('.') != string::npos)
            {
                result = max(result, mp[level] + (int)t.size());
            }
            // 不包含点,则说明是文件夹,此时记录深度和长度
            else
            {
                level++;
                mp[level] = mp[level - 1] + t.size() + 1;
            }
            level = 0;
        }
        // 统计对应的层次
        else
        {
            level++;
        }
    }
    return result;
}
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:243719次
    • 积分:5066
    • 等级:
    • 排名:第5764名
    • 原创:260篇
    • 转载:0篇
    • 译文:6篇
    • 评论:33条
    最新评论