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;
}
}

最新文章

  1. ASP.NET MVC之如何看待内置配置来提高性能优化(四)
  2. Resize Instance 操作详解 - 每天5分钟玩转 OpenStack(41)
  3. springmvc下实现登录验证码功能
  4. WinDbg使用介绍
  5. Android中AutoCompleteTextView的使用
  6. JS-取出字符串中重复次数最多的字符并输出
  7. 基于devkit8600的2011.04版uboot启动代码Start.s分析
  8. Android 一步步教你从ActionBar迁移到ToolBar
  9. Activity间的跳转,startActivity与startActivityForResult
  10. centos账户管理命令(root权限)
  11. SQL AlawaysOn 之二:添加组织和域用户
  12. 单词方阵 洛谷 P1101
  13. centos7.0安装教程
  14. jquery 实时监听输入框值变化方法
  15. gitbook 入门教程之发布电子书
  16. bash 3
  17. MATLAB数值积分法
  18. android--------Universal-Image-Loader图片加载框架和结合LruCache缓存图片
  19. 黑少微服务商店之Iron Cloud微服务开发云
  20. Python--通过索引excel表将文件进行文件夹分类的脚本+读取指定目录下所有文件名的脚本

热门文章

  1. Azure AD(二)调用受Microsoft 标识平台保护的 ASP.NET Core Web API 上
  2. Linux高性能服务器技术总结
  3. CF#358 D. Alyona and Strings DP
  4. JDBC12 ORM01 Object[]存放一条记录
  5. Akko海洋之星
  6. POI 导入excel数据自动封装成model对象--代码分析
  7. spring test---测试SpringMvc初识
  8. webpack指南(二)code spliting+懒加载
  9. hdu2138 How many prime numbers 米勒测试
  10. 利用logrotate将mysql log截断