/**
* 551. Student Attendance Record I
* You are given a string s representing an attendance record for a student where each character signifies whether the student was absent, late, or present on that day.
* The record only contains the following three characters:
'A': Absent.
'L': Late.
'P': Present.
The student is eligible for an attendance award if they meet both of the following criteria:
The student was absent ('A') for strictly fewer than 2 days total.
The student was never late ('L') for 3 or more consecutive days.
Return true if the student is eligible for an attendance award, or false otherwise.
Example 1:
Input: s = "PPALLP"
Output: true
Explanation: The student has fewer than 2 absences and was never late 3 or more consecutive days.
Example 2:
Input: s = "PPALLL"
Output: false
Explanation: The student was late 3 consecutive days in the last 3 days, so is not eligible for the award.
*
*/
#include <iostream>
using namespace std;
/**
* Solution: keep tracking letter and count it
* Time complexity: O(n)
* Space complexity: O(1)
*
*/
class Solution
{
public:
bool checkRecord(string s)
{
int size = s.size();
if (size == 0)
{
return false;
}
int absent_count = 0;
for (size_t i = 0; i < size; i++)
{
char ch = s[i];
if (ch == 'A')
{
absent_count += 1;
if (absent_count >= 2)
{
return false;
}
}
else if (ch == 'L' && i + 2 <= size - 1)
{
if (s[i + 1] == 'L' && s[i + 2] == 'L')
{
return false;
}
}
}
return true;
}
};