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.

 1 class Solution {
 2     public boolean checkRecord(String s) {
 3         boolean hasAppeared = false;
 4         int lateCount = 0;
 5         for (int i = 0; i < s.length(); i++) {
 6             if (s.charAt(i) == 'A') {
 7                 if (hasAppeared) {
 8                     return false;
 9                 } else {
10                     hasAppeared = true;
11                 }
12             }
13             
14             if (s.charAt(i) == 'L') {
15                 if (i > 0 && s.charAt(i - 1) != 'L') {
16                     lateCount = 1;
17                 } else {
18                     lateCount++;
19                 }
20                     
21                 if (lateCount >= 3) {
22                     return false;
23                 } 
24             }
25         }
26         return true;
27     }
28 }