Categories:

Tags:



Problem

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.

Constraints

  • 1 <= s.length <= 1000
  • s[i] is either 'A', 'L', or 'P'.

Solution

The problem Student Attendance Record I can be solved by simply counting the total number of absent days and checking if the student was late for 3 consecutive days.

Implementation

class Solution
{
  public:
    bool checkRecord(string s)
    {
        bool absent = false;
        int late = 0;

        for (char ch : s)
        {
            if (ch == 'A')
            {
                if (absent)
                    return false;
                absent = true;
            }

            if (ch == 'L')
            {
                late += 1;
                if (late == 3)
                    return false;
            }
            else
                late = 0;
        }

        return true;
    }
};