Loading

551. [字符串]学生出勤记录 I

551. 学生出勤记录 I

一次遍历,计算字符串中字符‘A’的数量,然后再查看一下是否存在“LLL”子串即可。可以在循环时优化。

方法一:优化一次循环

// 执行用时: 0 ms , 在所有 Java 提交中击败了 100.00% 的用户 
// 内存消耗: 36.5 MB , 在所有 Java 提交中击败了 85.58% 的用户
public class Solution {
    public boolean checkRecord(String s) {
        int count=0;
        // 出现两个A时提前中断
        for(int i=0;i<s.length() && count<2 ;i++)
            if(s.charAt(i)=='A')
                count++;
        return count<2 && s.indexOf("LLL")<0;
    }
}

方法二:正则表达式

//  . : 匹配任何除了换行以外的单个字符。
//  * : 匹配 0 个或者 大于 0 个 * 符号前面的表达式。
//  .* : 匹配任何字符串
//  a|b : 要么匹配 a 要么匹配 b

// 执行用时: 6 ms , 在所有 Java 提交中击败了 6.51% 的用户 
// 内存消耗: 37.3 MB , 在所有 Java 提交中击败了 5.12% 的用户
public class Solution {
    public boolean checkRecord(String s) {
        return !s.matches(".*(A.*A|LLL).*");
    }
}
posted @ 2020-10-24 12:02  上海井盖王  阅读(30)  评论(0)    收藏  举报