lintcode- 签到题-1154 · 出勤判断

341 阅读1分钟

描述

给定一个表示某学生出勤情况的字符串,‘A’代表出勤,‘D’代表缺勤,‘L’代表迟到。若该学生出现两次及以上缺勤或者连续三次及以上迟到则需要接受惩罚。请你判断该学生是否该接受惩罚并返回布尔类型。

**

字符串中只包含‘A’,'D','L'三种大写字母。
字符串长度不超过10000。

样例

输入样例1: “AADALLLAD”
输出样例1: true
样例解释1: 这名学生违约两次并且连续迟到三次,所以他应该受到惩罚。

输入样例2: “AADALLLA”
输出样例2: true
样例解释2: 这名学生只有一次违约,但他已经连续迟到三次了,所以他应该受到惩罚。

输入样例3: “AADALLAAL”
输出样例3: false
样例解释3: 这名学生只有一次违约,而且他最多连续两次迟到,所以他不应该受到惩罚。

题解

先计算缺勤,D代表的是确定,遍历字符串,找到D的个数,就是缺勤的次数。

三次迟到对应的字符串是‘LLL’,JavaScript中字符串有includes方法, includes() 查找字符串中是否包含指定的子字符串。

var str = "Hello world, welcome to the Runoob。";
var n = str.includes("world");
*n* 输出结果:

true

通过这个方法可以快速的判断是否有‘LLL’。

export class Solution {

  /**
   * judge
   *
   * @param record: Attendance record.
   * @return: If the student should be punished return true, else return false. 
   */
  judge(record) {
    // Write your code here.
  
    let countD=0
    for(let item of record){
        if(item==='D'){
           countD++
        }
    }
    if(countD>=2||record.includes('LLL')){
        return true
    }else return false
  }
}