-
题目链接:https://leetcode-cn.com/problems/longest-absolute-file-path/
-
思路:
- 据题意,文件夹或者文件用
\n
来分割,文件的层次用\t
来分割 - 用
\t
来模拟这道题,用数组f[100005]
来记录层次,第0 层为0 - 遍历字符串的每一个字符,用
o
记录当前层次,用len
记录这一层次的长度,当input[l] == '\t'
时o++;每遍历一个字符l++,当input[l] == '\n'
表示当前文件夹或者;文件名称结束,把当前地址长度更新到f中,如果是文件,那么把答案和现有的地址长度进行比较,更新res
- 据题意,文件夹或者文件用
-
代码:
int f[10005]; class Solution { public: int lengthLongestPath(string input) { int res = 0; int l = 0, r = input.size(); while(l < r){//每次的‘\n’结束一个循环 int o = 1; while(l < r && input[l] == '\t') o++,l++;//每次更新的是当前层次的字符串树,只与前一位有关,和后边的无关 int len = 0; bool isfile = false; while(l < r && input[l] != '\n'){ if(l < r && input[l] == '.') isfile = true; len++, l++; } l++; f[o] = len + f[o - 1]; cout << f[o] << endl; if(isfile) res = max(res, f[o] + o - 1); } return res; } };
821文件的最长路径
最新推荐文章于 2024-07-01 01:04:23 发布