The string "dir\n\tsubdir1\n\t\tfile1.ext\n\t\tsubsubdir1\n\tsubdir2\n\t\tsubsubdir2\n\t\t\tfile2.ext" represents:
dir
subdir1
file1.ext
subsubdir1
subdir2
subsubdir2
file2.ext
"dir/subdir2/subsubdir2/file2.ext", and its length is 32
public class Solution {
public int lengthLongestPath(String input) {
String[] paths = input.split("\n");
int[] stk = new int[paths.length + 1];
int maxLen = 0;
// 路径是定好的,覆盖的时候已经走完上一层,放心覆盖。
for(String str: paths){
int lev = str.lastIndexOf("\t") + 1;
// 路径长度 “/” 占一格
stk[lev+1] = stk[lev] + str.length() - lev + 1;
if(str.contains(".")) maxLen = Math.max(maxLen, stk[lev+1]-1); // 结尾处没有“/”, 所以减一
}
return maxLen;
}
}
public class Solution {
public int lengthLongestPath(String input) {
Deque<Integer> stk = new ArrayDeque<Integer>();
stk.push(0);
int res = 0;
for(String str: input.split("\n")){
int lev = str.lastIndexOf("\t") +1;
while(lev+1 < stk.size()) stk.pop();
int len = stk.peek() + str.length() - lev + 1;
stk.push(len);
if(str.contains(".")) res = Math.max(res, len - 1);
}
return res;
}
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。