Leetcode——551.學生出勤記錄|——題解+代碼實現

一、題目


給定一個字符串來代表一個學生的出勤記錄,這個記錄僅包含以下三個字符:

  1. 'A' : Absent,缺勤
  2. 'L' : Late,遲到
  3. 'P' : Present,到場

如果一個學生的出勤記錄中不超過一個'A'(缺勤)並且不超過兩個連續的'L'(遲到),那麼這個學生會被獎賞。

你需要根據這個學生的出勤記錄判斷他是否會被獎賞。

示例 1:

輸入: "PPALLP"
輸出: True

示例 2:

輸入: "PPALLL"
輸出: False

二、題解思路


  • 題解思路:遍歷string s,碰到爲A的,就計數加一,再判斷這個計數是否大於1,如果大於直接返回false;碰到L,在存在的情況下,判斷其接下來的第一位、第二位是否都爲L,若是,則返回false。

三、代碼實現


  • C++代碼實現
class Solution {
public:
    bool checkRecord(string s) 
    {
        int count1 = 0;
        int count2 = 0;
        for(int i = 0;i<s.size();i++)
        {
            if(s[i] == 'A')
            {
                count1++;
                if(count1 > 1)
                    return false;
            }
            else if(s[i] == 'L')
            {
                if(i+1<s.size() && i+2<s.size() && s[i+1]=='L' && s[i+2]=='L')
                {
                    return false;
                }
            }
        }
        return true;
    }
};

 

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