Java实现 LeetCode 388 文件的最长绝对路径
2024-10-21 10:16:33
388. 文件的最长绝对路径
假设我们以下述方式将我们的文件系统抽象成一个字符串:
字符串 “dir\n\tsubdir1\n\tsubdir2\n\t\tfile.ext” 表示:
dir
subdir1
subdir2
file.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” 表示:
dir
subdir1
file1.ext
subsubdir1
subdir2
subsubdir2
file2.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 就不是一个最长的路径。
PS:
“\t是一个字符”
import java.util.regex.Matcher;
import java.util.regex.Pattern;
class Solution {
//bx
public int lengthLongestPath(String input) {
if (input.length() == 0) {
return 0;
}
int res = 0;
String[] dirs = input.split("\n");
int[] sum = new int[dirs.length+1];
//StringBuilder sb = new StringBuilder();
for (String s : dirs) {
int level = s.lastIndexOf('\t') + 2;
//if (level == 2){
//sb.setLength(sum[1]);
//}
//sb.append(s.substring(s.lastIndexOf("\t")+1));
int len = s.length() - (level - 1);
if (s.contains(".")) {
res = Math.max(res, sum[level - 1] + len);
} else {
sum[level] = sum[level - 1] + len + 1; //是目录,要+1,目录有个/的
//sb.append("\\");
}
}
//System.out.println(sb.toString());
return res;
}
}
最新文章
- ASP.NET MVC之如何看待内置配置来提高性能优化(四)
- Resize Instance 操作详解 - 每天5分钟玩转 OpenStack(41)
- springmvc下实现登录验证码功能
- WinDbg使用介绍
- Android中AutoCompleteTextView的使用
- JS-取出字符串中重复次数最多的字符并输出
- 基于devkit8600的2011.04版uboot启动代码Start.s分析
- Android 一步步教你从ActionBar迁移到ToolBar
- Activity间的跳转,startActivity与startActivityForResult
- centos账户管理命令(root权限)
- SQL AlawaysOn 之二:添加组织和域用户
- 单词方阵 洛谷 P1101
- centos7.0安装教程
- jquery 实时监听输入框值变化方法
- gitbook 入门教程之发布电子书
- bash 3
- MATLAB数值积分法
- android--------Universal-Image-Loader图片加载框架和结合LruCache缓存图片
- 黑少微服务商店之Iron Cloud微服务开发云
- Python--通过索引excel表将文件进行文件夹分类的脚本+读取指定目录下所有文件名的脚本
热门文章
- Azure AD(二)调用受Microsoft 标识平台保护的 ASP.NET Core Web API 上
- Linux高性能服务器技术总结
- CF#358 D. Alyona and Strings DP
- JDBC12 ORM01 Object[]存放一条记录
- Akko海洋之星
- POI 导入excel数据自动封装成model对象--代码分析
- spring test---测试SpringMvc初识
- webpack指南(二)code spliting+懒加载
- hdu2138 How many prime numbers 米勒测试
- 利用logrotate将mysql log截断