# 551 学生出勤记录 I

# 题目

给定一个字符串来代表一个学生的出勤记录,这个记录仅包含以下三个字符:

'A' : Absent,缺勤 'L' : Late,迟到 'P' : Present,到场 如果一个学生的出勤记录中不超过一个'A'(缺勤)并且不超过两个连续的'L'(迟到),那么这个学生会被奖赏。

你需要根据这个学生的出勤记录判断他是否会被奖赏。

示例 1:

输入: "PPALLP"
输出: True

示例 2:

输入: "PPALLL"
输出: False

# 题解

TIP

执行用时:80 ms, 在所有 JavaScript 提交中击败了 80.97% 的用户
内存消耗:38 MB, 在所有 JavaScript 提交中击败了 17.49% 的用户
/**
 * @param {string} s
 * @return {boolean}
 */
var checkRecord = function(s) {
    let {length: l} = s
    let aCount = 0
    while(l--) {
        if(s[l] == 'A') {
            aCount += 1
        }
        
        if(aCount >= 2) return false

        if(s[l] == 'L') {
            if(s[l-1] == 'L' && s[l-2] == 'L') return false
        }
    }

    return true
};
  • 时间复杂度: `O(n)`,使用了 while循环
  • 空间复杂度: `O(1)`,使用一个常量储存值
  • 最好情况: 如果在开头发现两个 'A'或者遇到三个连续的 'L'
  • 最坏情况: 没有发现重复的值,那么会完成整个循环
最后更新时间: 10/21/2020, 11:17:16 PM