LeetCode 636 Exclusive Time of Functions

LeetCode 636

Exclusive Time of Functions

function idstatus(start/end)time
0start0
1start2
2start3
2end5
1end7
0end10
  • Solution:
class Solution {
public:
    vector<int> exclusiveTime(int n, vector<string>& logs) {
        vector<int> ans(n, 0);
        stack<int> id;
        // 栈用来存储每一条记录的id 
        int prev;
        // prev用来记录上一条记录的时间戳 
        for (int i = 0; i < logs.size(); i++) {
            string num = "";
            string time = "";
            string status = "";
            int t1 = logs[i].find(":");
            int t2 = logs[i].rfind(":");
            // 对每一条记录进行处理,用num来记录id,用time来记录读取到的时间,用status来记录读取到的时间是起始时间还是终止时间 
            num = logs[i].substr(0, t1);
            time = logs[i].substr(t2+1,logs[i].length()-1-t2);
            status = logs[i].substr(t1+1, 1);
            int num_i = changeTime(num);
            int time_i = changeTime(time); 
            if (status == "s") { 
                if(!id.empty()) {
                    //若本条记录的start time早于上一条记录的end time,则栈不为空,两条记录之间的时间包括在上一条记录的运行时间里面 
                    ans[id.top()] += time_i-prev;
                }
                id.push(num_i);
                prev = time_i;
            } else {
                ans[id.top()] += time_i-prev+1;
                id.pop();
                prev = time_i+1;
            }
        }
        return ans;
    }
    // 自定义函数,用于将读取到的时间字符串转化成数字 
    int changeTime(string t) {
        int re = 0;
        for (int i = 0; i < t.length(); i++) {
            re = re*10+t[i]-'0';
        }
        return re;
    }
};
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值