1. 题目

假设我们以下述方式将我们的文件系统抽象成一个字符串:

字符串 "dir\n\tsubdir1\n\tsubdir2\n\t\tfile.ext" 表示:

dirsubdir1subdir2file.ext

目录 dir 包含一个空的子目录 subdir1 和一个包含一个文件 file.ext 的子目录 subdir2 。

字符串 "dir\n\tsubdir1\n\t\tfile1.ext\n\t\tsubsubdir1\n\tsubdir2\n\t\tsubsubdir2\n\t\t\tfile2.ext" 表示:

dirsubdir1file1.extsubsubdir1subdir2subsubdir2file2.ext

目录 dir 包含两个子目录 subdir1 和 subdir2。
subdir1 包含一个文件 file1.ext 和一个空的二级子目录 subsubdir1。
subdir2 包含一个二级子目录 subsubdir2 ,其中包含一个文件 file2.ext。

我们致力于寻找我们文件系统中文件的最长 (按字符的数量统计) 绝对路径。例如,在上述的第二个例子中,最长路径为 "dir/subdir2/subsubdir2/file2.ext",其长度为 32 (不包含双引号)。

给定一个以上述格式表示文件系统的字符串,返回文件系统中文件的最长绝对路径的长度。 如果系统中没有文件,返回 0。

说明:
文件名至少存在一个 . 和一个扩展名。
目录或者子目录的名字不能包含 .
要求时间复杂度为 O(n) ,其中 n 是输入字符串的大小。

请注意,如果存在路径 aaaaaaaaaaaaaaaaaaaaa/sth.png 的话,那么 a/aa/aaa/file1.txt 就不是一个最长的路径。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/longest-absolute-file-path
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 用一个数组记录到当前层的字符个数,利用前缀累加
  • \t的个数表示层数,注意字符个数也包括\t

测试样例

"dir\n file.txt"
"di r\n file.txt"
"dir\n        file.txt"
"a.aaa\n\tfile.txt"
"dir\n\tsubdir1\n\tsubdir2\n\t\tfile.ext"
"dir\n\tsubdir1\n\t\tfile1.ext\n\t\tsubsubdir1\n\tsubdir2\n\t\tsubsubdir2\n\t\t\tfile2.ext"
class Solution {public:int lengthLongestPath(string input) {int maxlen=0, i, lv = 0, count=0;vector<int> len(50,0);bool foundfile = false;for(i = 0; i < input.size(); ++i){if(input[i]=='\n'){len[lv] = lv>0 ? len[lv-1]+count : count;//利用前缀求当前长度if(foundfile)//找到文件了{maxlen = max(maxlen, len[lv]+lv);//更新最大长度,lv为\t个数foundfile = false;}lv = 0;count = 0;}else if(input[i]=='\t')lv++;else{if(i>0 && input[i-1]=='.' && (isalpha(input[i])||isdigit(input[i])))foundfile = true;count++;}}len[lv] = lv>0 ? len[lv-1]+count : count;if(foundfile)maxlen = max(maxlen, len[lv]+lv);return maxlen;}
};

0 ms 6.6 MB

LeetCode 388. 文件的最长绝对路径(不用栈,前缀和)相关推荐

  1. leetcode 388. Longest Absolute File Path | 388. 文件的最长绝对路径(栈+DFS)

    题目 https://leetcode.com/problems/longest-absolute-file-path/ 题解 没有思路的时候,看 Related Topics,知道这题在考察什么了, ...

  2. 388. 文件的最长绝对路径

    链接:388. 文件的最长绝对路径 题解: class Solution {public:vector<string> split(string src, string delimeter ...

  3. [Swift]LeetCode388. 文件的最长绝对路径 | Longest Absolute File Path

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ➤微信公众号:山青咏芝(shanqingyongzhi) ➤博客园地址:山青咏芝(https://www.cnblog ...

  4. 文件系统中文件的最长(字符数)绝对路径 Longest Absolute File Path

    为什么80%的码农都做不了架构师?>>>    问题: Suppose we abstract our file system by a string in the followin ...

  5. LeetCode 329. 矩阵中的最长递增路径(记忆化递归)

    文章目录 1. 题目 2. 解题 2.1 记忆化递归 2.2 拓扑排序 1. 题目 给定一个整数矩阵,找出最长递增路径的长度. 对于每个单元格,你可以往上,下,左,右四个方向移动. 你不能在对角线方向 ...

  6. C# 获取视频文件播放时长

    以前是用xp (32位)系统,获取视频文件长度是通过调用Shell32.dll来读取文件信息得到的,最近换win7(32位)系统,编译以前的项目代码发现无法读取了,代码没有改动,拿到在xp下运行也不行 ...

  7. DOS命令导出文件夹内所有文件的名称和全路径

    DOS命令导出文件夹内所有文件的名称和全路径的方法: 1.Windows中调出CMD窗口 2.在命令行中输入:dir /s/b >>aa.txt 3.打开文本文件aa.txt,就可以看见文 ...

  8. ftp 文件夹 上传到服务器,ftp上传文件夹到服务器 远程路径

    ftp上传文件夹到服务器 远程路径 内容精选 换一换 WinSCP工具可以实现在本地与远程计算机之间安全地复制文件.与使用FTP上传代码相比,通过 WinSCP 可以直接使用服务器账户密码访问服务器, ...

  9. java最长同值路径_687.最长同路径值

    题目描述 给定一个二叉树,找到最长的路径,这个路径中的每个节点具有相同值. 这条路径可以经过也可以不经过根节点. 注意:两个节点之间的路径长度由它们之间的边数表示. 示例 输入: 5 / \ 4 5 ...

最新文章

  1. document.getElementById与document.getElementsById的区别
  2. 【微信小程序】侧滑栏,手动侧滑出个人中心(完整代码附效果图)
  3. 张亚勤:对于产业来讲,深度学习的黄金时代刚刚开始
  4. mysql innodb 从 ibd 文件恢复表数据
  5. 汇编: and,or逻辑运算指令
  6. 【干货】运维,你是青铜还是王者?
  7. 如何在Jetty中使用SPDY
  8. 1107班12月第5周 班级计划 为s1结业答辩做准备
  9. 重磅推荐!日立开源语义分割数据集标注工具Semantic Segmentation Editor
  10. Integer中1000==1000为false而100==100为true
  11. 计算机二级宏相关例题,计算机等级考试二级Access练习题
  12. P1020 导弹拦截 dp 树状数组维护最长升序列
  13. 测试一下flash显示图片
  14. 关于Navicat Premium 12注册机被windows病毒防护自动删除的问题解决
  15. 使用wps把word格式文件转换成pdf文件
  16. 游戏制作之路(51)地形细节工具
  17. 计算机内图片怎么自定义排序,win10系统设置图片文件自定义排序的图文教程
  18. 程序员有趣的面试智力题
  19. 转载:Android底部导航栏,三种风格和实现
  20. 自定义View实战(一) 汽车速度仪表盘

热门文章

  1. Halcon—Tuple中符号的含义
  2. ffmpeg 截图 java_Java Web 中使用ffmpeg实现视频转码、视频截图
  3. PATH环境变量的相关操作
  4. python给定一个整数n、判断n是否为素数_输入一个大于3的整数n,判断它是否为素数...
  5. All-In-One Code Framework [一站式示例代码库] 【转】
  6. Java-Redis 热部署问题
  7. 1、绪论初识机器学习
  8. Android 位置服务——BaiduLocation的使用
  9. [转]版本二写代码的小女孩
  10. linux操作指令及根目录介绍