我该如何解决这个问题?
输入: s-字符串(n <= 100 000),其中包括以下字母:
一个缺席的
l晚了
现在的p
如果连续字母为“ aaa”,则输出:不允许学生参加考试 如果字符串的长度大于4'L',则输出:不允许学生参加考试
否则-学生可以参加考试。
示例:
输入:PPPPPLLLL
输出:不允许学生参加考试
输入:PLPLPPPAAA
输出:不允许学生参加考试
输入:APLPLLPPAP
输出:学生可以参加考试
我需要一个组合公式。但是如何应用它以及哪个呢?
答案 0 :(得分:0)
我读到的要求是字符串中的任何地方超过4 L都会阻止学生参加考试-他们不必连续。另外,我假设所有字符都是大写。
我认为,最短的Java解决方案是这样:
static boolean canTakeExam(String s)
{
return !s.contains("AAA") && s.replaceAll("[^L]", "").length() < 4;
}
但是更有效的实现是:
static boolean canTakeExam(String s)
{
for(int i=0, ca=0, cl=0; i<s.length(); i++)
{
char c = s.charAt(i);
if(c == 'A')
{
if(++ca == 3) return false;
}
else
{
if(c == 'L' && ++cl == 4) return false;
ca = 0;
}
}
return true;
}