【LeetCode】第551題——學生出勤記錄I(難度:簡單)
阿新 • • 發佈:2021-01-31
【LeetCode】第551題——學生出勤記錄I(難度:簡單)
題目描述
給定一個字串來代表一個學生的出勤記錄,這個記錄僅包含以下三個字元:
- ‘A’ : Absent,缺勤
- ‘L’ : Late,遲到
- ‘P’ : Present,到場
如果一個學生的出勤記錄中不超過一個’A’(缺勤)並且不超過兩個連續的’L’(遲到),那麼這個學生會被獎賞。
你需要根據這個學生的出勤記錄判斷他是否會被獎賞。
-
示例 1:
輸入: “PPALLP”
輸出: True -
示例 2:
輸入: “PPALLL”
輸出: False
來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/student-attendance-record-i
著作權歸領釦網路所有。商業轉載請聯絡官方授權,非商業轉載請註明出處。
解題思路
因為‘A’不能出現兩次,因此可以用boolean來記錄,‘L’不能連續出現三次,因此用int來記錄。
也可以用indexOf來做,不過本人比較喜歡全遍歷。
程式碼詳解
class Solution {
public boolean checkRecord(String s) {
boolean A_flag = true; // 不允許出現兩次A,用boolean足夠了
int L_count = 0; // 不允許連續出現三次L,用int記錄
for(int i = 0; i < s.length(); ++i) {
if(s.charAt(i) == 'A') {
L_count = 0; // 遍歷到非L時,L_count需清零
if(A_flag) {
A_flag = false; // 允許出現一次
} else {
return false; // 但不允許出現第二次
}
} else if(s.charAt(i) == 'L') {
++L_count; // 遍歷到L就自加
if(L_count == 3) { // 連續三次就返回false
return false;
}
} else {
L_count = 0; // 遍歷到非L時,L_count需清零
}
}
return true;
}
}
注意點
- 注意遍歷到非L時,L_count需清零。
- 本方法可以在滿足條件時提前終止迴圈。