LeetCode 388. 文件的最长绝对路径(不用栈,前缀和)
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. 文件的最长绝对路径(不用栈,前缀和)相关推荐
- leetcode 388. Longest Absolute File Path | 388. 文件的最长绝对路径(栈+DFS)
题目 https://leetcode.com/problems/longest-absolute-file-path/ 题解 没有思路的时候,看 Related Topics,知道这题在考察什么了, ...
- 388. 文件的最长绝对路径
链接:388. 文件的最长绝对路径 题解: class Solution {public:vector<string> split(string src, string delimeter ...
- [Swift]LeetCode388. 文件的最长绝对路径 | Longest Absolute File Path
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ➤微信公众号:山青咏芝(shanqingyongzhi) ➤博客园地址:山青咏芝(https://www.cnblog ...
- 文件系统中文件的最长(字符数)绝对路径 Longest Absolute File Path
为什么80%的码农都做不了架构师?>>> 问题: Suppose we abstract our file system by a string in the followin ...
- LeetCode 329. 矩阵中的最长递增路径(记忆化递归)
文章目录 1. 题目 2. 解题 2.1 记忆化递归 2.2 拓扑排序 1. 题目 给定一个整数矩阵,找出最长递增路径的长度. 对于每个单元格,你可以往上,下,左,右四个方向移动. 你不能在对角线方向 ...
- C# 获取视频文件播放时长
以前是用xp (32位)系统,获取视频文件长度是通过调用Shell32.dll来读取文件信息得到的,最近换win7(32位)系统,编译以前的项目代码发现无法读取了,代码没有改动,拿到在xp下运行也不行 ...
- DOS命令导出文件夹内所有文件的名称和全路径
DOS命令导出文件夹内所有文件的名称和全路径的方法: 1.Windows中调出CMD窗口 2.在命令行中输入:dir /s/b >>aa.txt 3.打开文本文件aa.txt,就可以看见文 ...
- ftp 文件夹 上传到服务器,ftp上传文件夹到服务器 远程路径
ftp上传文件夹到服务器 远程路径 内容精选 换一换 WinSCP工具可以实现在本地与远程计算机之间安全地复制文件.与使用FTP上传代码相比,通过 WinSCP 可以直接使用服务器账户密码访问服务器, ...
- java最长同值路径_687.最长同路径值
题目描述 给定一个二叉树,找到最长的路径,这个路径中的每个节点具有相同值. 这条路径可以经过也可以不经过根节点. 注意:两个节点之间的路径长度由它们之间的边数表示. 示例 输入: 5 / \ 4 5 ...
最新文章
- document.getElementById与document.getElementsById的区别
- 【微信小程序】侧滑栏,手动侧滑出个人中心(完整代码附效果图)
- 张亚勤:对于产业来讲,深度学习的黄金时代刚刚开始
- mysql innodb 从 ibd 文件恢复表数据
- 汇编: and,or逻辑运算指令
- 【干货】运维,你是青铜还是王者?
- 如何在Jetty中使用SPDY
- 1107班12月第5周 班级计划 为s1结业答辩做准备
- 重磅推荐!日立开源语义分割数据集标注工具Semantic Segmentation Editor
- Integer中1000==1000为false而100==100为true
- 计算机二级宏相关例题,计算机等级考试二级Access练习题
- P1020 导弹拦截 dp 树状数组维护最长升序列
- 测试一下flash显示图片
- 关于Navicat Premium 12注册机被windows病毒防护自动删除的问题解决
- 使用wps把word格式文件转换成pdf文件
- 游戏制作之路(51)地形细节工具
- 计算机内图片怎么自定义排序,win10系统设置图片文件自定义排序的图文教程
- 程序员有趣的面试智力题
- 转载:Android底部导航栏,三种风格和实现
- 自定义View实战(一) 汽车速度仪表盘
热门文章
- Halcon—Tuple中符号的含义
- ffmpeg 截图 java_Java Web 中使用ffmpeg实现视频转码、视频截图
- PATH环境变量的相关操作
- python给定一个整数n、判断n是否为素数_输入一个大于3的整数n,判断它是否为素数...
- All-In-One Code Framework [一站式示例代码库] 【转】
- Java-Redis 热部署问题
- 1、绪论初识机器学习
- Android 位置服务——BaiduLocation的使用
- [转]版本二写代码的小女孩
- linux操作指令及根目录介绍