# 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% 的用户
内存消耗: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'
- 最坏情况: 没有发现重复的值,那么会完成整个循环