算法之學(xué)生出勤記錄
題目:
給你一個(gè)字符串 s 表示一個(gè)學(xué)生的出勤記錄,其中的每個(gè)字符用來標(biāo)記當(dāng)天的出勤情況(缺勤、遲到、到場(chǎng))。記錄中只含下面三種字符:
'A':Absent,缺勤
'L':Late,遲到
'P':Present,到場(chǎng)
如果學(xué)生能夠 同時(shí) 滿足下面兩個(gè)條件,則可以獲得出勤獎(jiǎng)勵(lì):
按 總出勤 計(jì),學(xué)生缺勤('A')嚴(yán)格 少于兩天。
學(xué)生 不會(huì) 存在 連續(xù) 3 天或 連續(xù) 3 天以上的遲到('L')記錄。
如果學(xué)生可以獲得出勤獎(jiǎng)勵(lì),返回 true ;否則,返回 false 。
示例 1:
輸入:s = "PPALLP"
輸出:true
解釋:學(xué)生缺勤次數(shù)少于 2 次,且不存在 3 天或以上的連續(xù)遲到記錄。
示例 2:
輸入:s = "PPALLL"
輸出:false
解釋:學(xué)生最后三天連續(xù)遲到,所以不滿足出勤獎(jiǎng)勵(lì)的條件。
提示:
1 <= s.length <= 1000
s[i] 為 'A'、'L' 或 'P'
我的答案:
public class Solution {
? ?public bool CheckRecord(string s) {
? ? ? ?int a=0;
? ? ? ?for(int i=0;i<s.Length;i++)
? ? ? ?{
? ? ? ? ? ?if(s[i]=='A')
? ? ? ? ? ?{
? ? ? ? ? ? ? ?a++;
? ? ? ? ? ?}else if(s[i]=='L'){
? ? ? ? ? ? ? ?if((i<s.Length-2)&&s[i+1]=='L'&&s[i+2]=='L')
? ? ? ? ? ? ? ?{
? ? ? ? ? ? ? ? ? ?return false;
? ? ? ? ? ? ? ?}
? ? ? ? ? ?}
? ? ? ?}
? ? ? ?if(a<2)
? ? ? ?{
? ? ? ? ? ?return true;
? ? ? ?}
? ? ? ?return false;
? ?}
}
我的解析:
遍歷一遍字符串,用1個(gè)變量來記錄A的個(gè)數(shù),當(dāng)遇到'A'的時(shí)候就+1。每次遇到L的時(shí)候,要判斷L是否連續(xù)出現(xiàn)3次,如果是,直接返回false,注意i不要越界了,一定是i<s.Length-2。
標(biāo)簽: