给定一个字符串来代表一个学生的出勤纪录,这个纪录仅包含以下三个字符:
‘A’ : Absent,缺勤
‘L’ : Late,迟到
‘P’ : Present,到场
如果一个学生的出勤纪录中不超过一个’A’(缺勤)并且不超过两个连续的’L’(迟到),那么这个学生会被奖赏。
你需要根据这个学生的出勤纪录判断他是否会被奖赏。
输入: “PPALLP” , 输出: True
输入: “PPALLL” ,输出: False
解法一:
天,遇到了一个好容易的题,可能是有史以来最好解决的?
查找是否存在 “LLL” ,和是否大于1个 “A” , 使用函数 indexOf()就可以。 str.indexOf(value,[start])
var checkRecord = function(s) {
var posL = s.indexOf("LLL") , posA = s.indexOf("A")
if(posL>-1) {
return false;
}
if(posA>-1) {
if(s.indexOf("A",posA+1)>-1){
return false;
}
}
return true;
}
执行用时:64 ms
已经战胜 98.01 % 的 javascript 提交记录
解法二:
for 循环逐个判断
var checkRecord = function(s) {
var c=0
for(var i in s){
if(s[i]=="A"){
c++
if(c>1) return false;
}else if(s[i]=="L"){
i=parseInt(i)
if((s[i]+s[i+1]+s[i+2])=='LLL'){
return false;
}
}
}
return true;
}
执行用时:72 ms
已经战胜 68.87 % 的 javascript 提交记录