題:給定一個字符串來代表學生的出勤記錄,其中三個字符:'A' : Absent,缺勤 ,'L' : Late,遲到,'P' : Present,到場。如果一個出勤記錄中不超過一個'A'(缺勤)並且不超過兩個連續的'L'(遲到),那麼這個學生會被獎賞。例如:輸入: "PPALLP" ,輸出: True 輸入爲:"PPALLL" ,輸出: False。
法:統計字符A出現次數和字符L的連續出現次數。字符A比較簡單,次數用cnt1表示,出現一次就直接cnt1+=1,如果cnt1>=2,直接return Fasle跳出循環。字符L的連續出現次數用cnt2表示,本來我寫的還比較複雜,考慮如果已經連續出現兩次L,判斷它下一個字符是不是L之類的。但後來參考了網上別的解法,發現如果當前字符爲L,就使cnt2+=1,如果爲A或P,就直接使cnt2=0,破壞L的記錄連續性。
def checkRecord(self, s):
"""
:type s: str
:rtype: bool
"""
cnt1,cnt2=0,0
for x in s:
if x =='A':
cnt1+=1
cnt2=0
if cnt1>=2:return False
elif x=='L':
cnt2+=1
if cnt2>=3:return False
else:cnt2=0
return True