551. 学生出勤记录
551. 學(xué)生出勤記錄 I
給你一個(gè)字符串 s 表示一個(gè)學(xué)生的出勤記錄,其中的每個(gè)字符用來標(biāo)記當(dāng)天的出勤情況(缺勤、遲到、到場)。記錄中只含下面三種字符:
‘A’:Absent,缺勤
‘L’:Late,遲到
‘P’:Present,到場
如果學(xué)生能夠 同時(shí) 滿足下面兩個(gè)條件,則可以獲得出勤獎勵(lì):
按 總出勤 計(jì),學(xué)生缺勤(‘A’)嚴(yán)格 少于兩天。
學(xué)生 不會 存在 連續(xù) 3 天或 3 天以上的遲到(‘L’)記錄。
如果學(xué)生可以獲得出勤獎勵(lì),返回 true ;否則,返回 false 。
示例 1:
輸入:s = “PPALLP”
輸出:true
解釋:學(xué)生缺勤次數(shù)少于 2 次,且不存在 3 天或以上的連續(xù)遲到記錄。
示例 2:
輸入:s = “PPALLL”
輸出:false
解釋:學(xué)生最后三天連續(xù)遲到,所以不滿足出勤獎勵(lì)的條件。
提示:
1 <= s.length <= 1000
s[i] 為 ‘A’、‘L’ 或 ‘P’
解題思路
- L:變量代表連續(xù)遲到的天數(shù)
- A:代表缺勤的總天數(shù)
最后根據(jù)A和L的按照出勤獎勵(lì)的條件:
- 按 總出勤 計(jì),學(xué)生缺勤(‘A’)嚴(yán)格 少于兩天。
- 學(xué)生 不會 存在 連續(xù) 3 天或 3 天以上的遲到(‘L’)記錄。
如果在更新缺勤次數(shù)和連續(xù)遲到次數(shù)之后,出現(xiàn)缺勤次數(shù)大于或等于 2 或者連續(xù)遲到次數(shù)大于或等于 3,則該出勤記錄不滿足可獎勵(lì)的要求,返回false。如果遍歷結(jié)束時(shí)未出現(xiàn)出勤記錄不滿足可獎勵(lì)的要求的情況,則返回 true。
代碼
class Solution {public boolean checkRecord(String s) {int A=0,L=0;for (int i = 0; i < s.length(); i++) {if (s.charAt(i)=='A'){if (++A==2)return false;}else if (s.charAt(i)=='L'){if (++L>=3)return false;continue;}L=0;}return true;} }- 時(shí)間復(fù)雜度:O(n),其中?n?是字符串?s?的長度。需要遍歷字符串?s?一次。
- 空間復(fù)雜度:O(1)。
總結(jié)
以上是生活随笔為你收集整理的551. 学生出勤记录的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 576. 出界的路径数
- 下一篇: 345. 反转字符串中的元音字母