LeetCodeDiary

A Diary for solving LeetCode problems

View on GitHub

551. 学生出勤记录 I

给你一个字符串 s 表示一个学生的出勤记录,其中的每个字符用来标记当天的出勤情况(缺勤、迟到、到场)。记录中只含下面三种字符:

如果学生能够 同时 满足下面两个条件,则可以获得出勤奖励:

如果学生可以获得出勤奖励,返回 true ;否则,返回 false

示例 1:

输入:s = "PPALLP"
输出:true
解释:学生缺勤次数少于 2 次,且不存在 3 天或以上的连续迟到记录。

示例 2:

输入:s = "PPALLL"
输出:false
解释:学生最后三天连续迟到,所以不满足出勤奖励的条件。

提示:

字符串 简单

代码

class Solution:
    def checkRecord(self, s: str) -> bool:
        counter = defaultdict(int)
        for c in s:
            if c == 'L':
                counter[c] += 1
                if counter[c] >= 3:
                    return False
            elif c == 'A':
                counter['L'] = 0
                counter[c] += 1
                if counter[c] >= 2:
                    return False
            else:
                counter['L'] = 0
                counter[c] += 1
        return True