551.學生出勤記錄1--python

題:給定一個字符串來代表學生的出勤記錄,其中三個字符:'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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章