zoukankan      html  css  js  c++  java
  • Java实现 LeetCode 388 文件的最长绝对路径

    388. 文件的最长绝对路径

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

    字符串 “dir subdir1 subdir2 file.ext” 表示:

    dir
        subdir1
        subdir2
            file.ext
    

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

    字符串 “dir subdir1 file1.ext subsubdir1 subdir2 subsubdir2 file2.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:
    “ 是一个字符”

    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("
    ");
            int[] sum = new int[dirs.length+1];
            //StringBuilder sb = new StringBuilder();
    
            for (String s : dirs) {
                int level = s.lastIndexOf('	') + 2;
                //if (level == 2){
                    //sb.setLength(sum[1]);
                //}
                //sb.append(s.substring(s.lastIndexOf("	")+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;
        }
    }
    
  • 相关阅读:
    Java实现 洛谷 P1060 开心的金明
    (Java实现) 洛谷 P1605 迷宫
    (Java实现) 洛谷 P1605 迷宫
    (Java实现)洛谷 P1093 奖学金
    (Java实现)洛谷 P1093 奖学金
    Java实现 洛谷 P1064 金明的预算方案
    Java实现 洛谷 P1064 金明的预算方案
    (Java实现) 洛谷 P1031 均分纸牌
    QT树莓派交叉编译环开发环境搭建(附多个exe工具下载链接)
    武则天红人对唐睿宗的桃色报复(如此缺少城府,注定了要在宫廷中过早地出局)
  • 原文地址:https://www.cnblogs.com/a1439775520/p/12946524.html
Copyright © 2011-2022 走看看