551. 学生出勤记录 I
贴个题目:
贴个示例:
解题思路:
首先看只有同时满足两个条件才能满足,那么我们就是遍历一次,判断这两个条件,一旦有一个条件不成立,就return false,最后遍历完成之后,如果都没有违背这两个条件就return true。
贴个代码:
bool checkRecord(char * s){
int len=strlen(s);
int absent=0;
int late=1;
for(int i=0;i<len;i++)
{
//用absent统计缺席日子,如果absent==2就返回false
if(s[i]=='A') absent++;
if(absent==2) return false;
//要连续前后两个都是L才能让late+1,如果不是就将late重置为1
if(i>0&&s[i-1]=='L'&&s[i]=='L') late++;
else late=1;
if(late==3) return false;//一旦late==3,就达成了连续三天迟到
}
return true;
}
性能分析:
时间分析:
我们遍历一次字符串,因此时间复杂度:O(n)
空间分析:
新建了常数个变量,因此空间复杂度:O(1)