2
public int lengthLongestPath(String input) {3
var stack = new ArrayDeque<Integer>();5
String[] lines = input.split("\n");6
for (var line : lines) {7
int tabs = countTabs(line);8
while (tabs < stack.size()) {11
int current = stack.isEmpty() ? 0 : stack.peek();12
int nameLength = line.length() - tabs;13
if (isFilename(line)) {14
max = Math.max(max, current + nameLength);16
stack.push(current + nameLength + 1);22
private int countTabs(String s) {23
for (int i = 0; i < s.length(); i++) {24
if (s.charAt(i) != '\t') return i;29
private boolean isFilename(String s) {30
return s.lastIndexOf(".") != -1;