没有最好,只有更好!

True mastery of any skill takes a lifetime.

leetcode_388 Longest Absolute File Path

  • 题目分析

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

  • 解题思路

    利用\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;
}
阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yzhang6_10/article/details/52368213
个人分类: leetcode编程
上一篇leetcode_383 Ransom Note
下一篇剑指offer
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭