学生出勤记录
You are given a string representing an attendance record for a student. The record only contains the following three characters:
'A' : Absent.
'L' : Late.
'P' : Present.
A student could be rewarded if his attendance record doesn’t contain more than one ‘A’ (absent) or more than two continuous ‘L’ (late).
You need to return whether the student could be rewarded according to his attendance record.
Example 1:
Input: “PPALLP”
Output: True
Example 2:
Input: “PPALLL”
Output: False
1计数器解决
分别记录缺勤和连续迟到的次数,如果当前遇到缺勤,那么缺勤计数器自增1,如果此时次数大于1了,说明已经不是优秀了,直接返回false,否则连续迟到计数器清零。如果当前遇到迟到,那么连续迟到计数器自增1,如果此时连续迟到计数器大于1了,说明已经不是优秀了,直接返回false。如果遇到正常出勤了,那么连续迟到计数器清零2index() lastindex()
// 需要使用 缺勤计数器 和 迟到计数器吗 我看完全不需要这样做
public static boolean checkRecord(String s) {
// 这样是最巧妙的
return s.indexOf('A') == s.lastIndexOf('A') && s.contains("LLL");
}
// 第二种最普通的方法
public static boolean checkRecord2(String s) {
int countA = 0; // 缺勤计数器
int countL = 0; // 迟到计数器
for (Character character : s.toCharArray()) {
if (character == 'A'){
countA++;
if (countA > 1){
return false;
}
countL = 0;
}
else if (character == 'L'){
countL++;
if (countL > 2){
return false;
}
}
else {
countL = 0;
}
}
return true;
}