[LeetCode] 388. Longest Absolute File Path
Suppose we abstract our file system by a string in the following manner:
The string "dirntsubdir1ntsubdir2nttfile.ext"represents:
dir
subdir1
subdir2
file.ext
The directory dir contains an empty sub-directory subdir1 and a sub-directory subdir2 containing a file file.ext.
The string "dirntsubdir1nttfile1.extnttsubsubdir1ntsubdir2nttsubsubdir2ntttfile2.ext"represents:
dir
subdir1
file1.ext
subsubdir1
subdir2
subsubdir2
file2.ext
The directory dir contains two sub-directories subdir1 and subdir2. subdir1 contains a file file1.ext and an empty second-level sub-directory subsubdir1. subdir2 contains a second-level sub-directory subsubdir2 containing a file file2.ext.
We are interested in finding the longest (number of characters) absolute path to a file within our file system. For example, in the second example above, the longest absolute path is "dir/subdir2/subsubdir2/file2.ext", and its length is 32 (not including the double quotes).
Given a string representing the file system in the above format, return the length of the longest absolute path to file in the abstracted file system. If there is no file in the system, return 0.
Note:
.
. Time complexity required: O(n) where n is the size of the input string.
Notice that
a/aa/aaa/file1.txt
is not the longest file path, if there is another path aaaaaaaaaaaaaaaaaaaaa/sth.png
. Solution
class Solution {
public int lengthLongestPath(String input) {
if (input == null || input.length() == 0) return 0;
Deque stack = new ArrayDeque<>();
stack.push(0);
int max = 0;
for (String str: input.split("
")) {
int level = str.lastIndexOf("\t")+1;
while (level+1 < stack.size()) stack.pop();
int len = stack.peek()+str.length()-level+1;
stack.push(len);
if (str.contains(".")) max = Math.max(max, len-1);
}
return max;
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Lighthouse에서 파일 전송량이 얼마나 많았는지 알아보기Chrome에서 사용할 수 있는 Lighthouse의 기능이 최근 Google I/O로 업데이트되었습니다. Performance Budget이라고 하는 HTML/CSS/Javascipt/image등의 파일 전송 용량...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.