class Solution {
public int[] exclusiveTime(int n, List<String> logs) {
int[] ans = new int[n];
Stack<Integer> stack = new Stack<Integer>();//栈顶代表当前在执行的任务
String[] s = logs.get(0).split(":");
int i = 1;
stack.push(Integer.parseInt(s[0]));
int start = Integer.parseInt(s[2]);//记录任务开始的时间
while(i<logs.size()){
s = logs.get(i).split(":");
if(s[1].equals("start")){
if(!stack.isEmpty())//需要考虑存在时间段没有任务需要执行的情况
ans[stack.peek()] += Integer.parseInt(s[2])-start;//出现新的任务,当前任务需要暂停,计算暂停前的时间
stack.push(Integer.parseInt(s[0]));//开始新的任务
start = Integer.parseInt(s[2]);
i++;
}
else{
ans[stack.peek()] += Integer.parseInt(s[2])-start+1;//任务结束时,计算当前任务在这个阶段处理的时间
stack.pop();//删除已经完成的任务
start = Integer.parseInt(s[2])+1;
i++;
}
}
return ans;
}
}