给定一个字符串来代表一个学生的出勤记录,这个记录仅包含以下三个字符:

  1. ‘A’ : Absent,缺勤
  2. ‘L’ : Late,迟到
  3. ‘P’ : Present,到场

如果一个学生的出勤记录中不超过一个’A’(缺勤)并且不超过两个连续的’L’(迟到),那么这个学生会被奖赏。
你需要根据这个学生的出勤记录判断他是否会被奖赏。
示例 1:

  1. 输入: "PPALLP"
  2. 输出: True

示例 2:

  1. 输入: "PPALLL"
  2. 输出: False

代码

  1. class Solution {
  2. public:
  3. bool checkRecord(string s) {
  4. int Absent = 0;
  5. int Late = 0;
  6. int Present = 0;
  7. char lastStatus = 'T';
  8. char llStatus = 'T';
  9. if(s.size() == 0){
  10. return true;
  11. }
  12. for(int i = 0; i< s.size(); i++){
  13. if(s[i] == 'A'){
  14. Absent++;
  15. if(Absent>=2){
  16. return false;
  17. }
  18. if(i >= 1){
  19. llStatus = lastStatus;
  20. }
  21. lastStatus = 'A';
  22. }else if(s[i] == 'L'){
  23. Late++;
  24. if(i > 1 && lastStatus == 'L' && llStatus == 'L'){
  25. return false;
  26. }
  27. if(i >= 1){
  28. llStatus = lastStatus;
  29. }
  30. lastStatus = 'L';
  31. }else if(s[i] == 'P'){
  32. Present++;
  33. if(i >= 1){
  34. llStatus = lastStatus;
  35. }
  36. lastStatus = 'P';
  37. }
  38. }
  39. return true;
  40. }
  41. };