551. Student Attendance Record I
/** * 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; } };