class ExclusiveTimeFunctions {
public int[] exclusiveTime(int n, List logs) {
int[] result = new int[n];
Stack stack = new Stack<> ();
int prev = 0;
// [Start, end]
for(String log: logs) {
String[] token = log.split(":");
int funcId = Integer.parseInt(token[0]);
boolean start = token[1].equals("start");
int ts = Integer.parseInt(token[2]);
if(start) {
if(!stack.isEmpty()) result[stack.peek()] += ts - prev;
stack.push(funcId);
prev = ts;
} else {
if(!stack.isEmpty()) result[stack.pop()] += ts - prev + 1;
prev = ts + 1;
}
}
return result;
}
}