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**.
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.
Constraints:
1 <= s.length <= 1000
s[i]
is either'A'
,'L'
, or'P'
.
Solution (Java)
class Solution {
public boolean checkRecord(String s) {
int aCount = 0;
int i = 0;
while (i < s.length()) {
if (s.charAt(i) == 'A') {
aCount++;
if (aCount > 1) {
return false;
}
} else if (s.charAt(i) == 'L') {
int continuousLCount = 0;
while (i < s.length() && s.charAt(i) == 'L') {
i++;
continuousLCount++;
if (continuousLCount > 2) {
return false;
}
}
i--;
}
i++;
}
return true;
}
}
Explain:
nope.
Complexity:
- Time complexity : O(n).
- Space complexity : O(n).