November 28, 2019

388. Longest Absolute File Path

388. Longest Absolute File Path

  • 用split(\n) 将原串分割开,相当于一次读一行
  • 利用\t的个数来当前目录/文件在第几层
  • 从上到下一行一行读入的顺序,用一个Map把前面几层的字符串长度都记下来,key存第几层,value存前几层字符串总长度。

参考了这个帖子.

class Solution {
    public int lengthLongestPath(String input) {
        Map<Integer, Integer> levelMap = new HashMap<>();
        levelMap.put(-1, 0);
        String[] dirs = input.split("\n");
        int longest = 0;
        for (String dir : dirs) {
            int level = dir.lastIndexOf("\t") + 1;
            int curLen = dir.length() - level;
            if (dir.contains(".")) {
                longest = Math.max(longest, levelMap.get(level - 1) + curLen);
            } else {
                levelMap.put(level, levelMap.get(level - 1) + curLen + 1); // +1 for the slash
            }
        }
        return longest;
    }
}
comments powered by Disqus