算法课第十一周作业 | Longest Consecutive Sequence
来源:互联网 发布:手机淘宝网店实名认证 编辑:程序博客网 时间:2024/06/04 01:18
写在前面:
选取题目388,采用深度优先搜索解决问题。
题意解读:这道题给了我们一个字符串,里面包含\n和\t这种表示回车和空格的特殊字符,让我们找到某一个最长的绝对文件路径。
解题思路:可以用哈希表来建立深度和当前深度的绝对路径长度之间的映射,那么当前深度下的文件的绝对路径就是文件名长度加上哈希表中当前深度对应的长度,我们的思路是遍历整个字符串,遇到\n或者\t就停下来,然后我们判断,如果遇到的是回车,我们把这段文件名提取出来,如果里面包含'.',说明是文件,我们更新res长度,如果不包含点,说明是文件夹,我们深度level自增1,然后建立当前深度和总长度之间的映射,然后我们将深度level重置为0。之前如果遇到的是空格\t,那么我们深度加一,通过累加\t的个数,我们可以得知当前文件或文件夹的深度,然后做对应的处理。
代码:
class Solution {public: int lengthLongestPath(string input) { int res = 0, n = input.size(), level = 0; unordered_map<int, int> m {{0, 0}}; for (int i = 0; i < n; ++i) { int start = i; while (i < n && input[i] != '\n' && input[i] != '\t') ++i; if (i >= n || input[i] == '\n') { string t = input.substr(start, i - start); if (t.find('.') != string::npos) { res = max(res, m[level] + (int)t.size()); } else { ++level; m[level] = m[level - 1] + (int)t.size() + 1; } level = 0; } else { ++level; } } return res; }};
0 0
- 算法课第十一周作业 | Longest Consecutive Sequence
- LeetCode算法题目:Longest Consecutive Sequence
- 算法第十一周作业01
- Longest Consecutive Sequence
- Longest Consecutive Sequence
- Leetcode : Longest Consecutive Sequence
- [Leetcode] Longest Consecutive Sequence
- longest consecutive elements sequence
- [leetcode] longest consecutive sequence
- Longest Consecutive Sequence
- Longest Consecutive Sequence
- 【leetcode】Longest Consecutive Sequence
- LeetCode - Longest Consecutive Sequence
- [LeetCode]Longest Consecutive Sequence
- leetcode:Longest Consecutive Sequence
- Longest Consecutive Sequence
- Longest Consecutive Sequence
- [Leetcode]Longest Consecutive Sequence
- ambari安装记录
- jsp中使用taglib出错解决办法
- MT6737 7.0Camera总结
- java环境变量配置的目的与作用
- extern的使用方法
- 算法课第十一周作业 | Longest Consecutive Sequence
- 实例变量与static变量的区别
- 多线程和多进程的管理
- 使用qsort排序一个整型数组,一个浮点型数组,一个字符串数组
- GitHub For Windows 使用教程
- LeetCode:36. Valid Sudoku,数独是否有效 :
- Yii2 使用Event -2 ,如何使用事件_@TERRY
- 自己实现一个bubble_sort(冒泡排序),可以完成不同类型数据的排序
- Linux中确定CPU的情况