今天去面试,要求现场写一个算法,如上图,会议室里面试官+领导+我,还用我的笔记本连接了投影仪。。。我以为就是监控我不让我查百度或者不让查资料啥的,然后头皮发麻,原生PHP写吧,于是有了下面的方案
function checkRecord($string)
{
$length = strlen($string);
$i = 0;
// 缺勤统计数
$absentCount = 0;
// 默认无法获取奖励
$result = true;
// 迟到次数
$lateCount = 1;
// 默认是null
$prevStr = null;
while ($i < $length) {
$currentStr = $string[$i];
// 统计A出现的次数
if ($currentStr == 'A') {
$absentCount++;
if ($absentCount > 1) {
return false;
}
}
if ($prevStr == 'L' && $currentStr == 'L') {
$lateCount++;
} else {
$lateCount = 1;
}
if ($absentCount > 1 || $lateCount > 2) {
return false;
}
// 当前字符串保存一下
$prevStr = $currentStr;
$i++;
}
return $result;
}
写的过程中面试官比较耐心的指正了我不审题导致的一些问题,然后继续改,其实这种情况下我真的是比较紧张的,无法冷静思考(其实都是为我的菜找借口),到最后面试官说,其实可以通过字符串函数或者正则表达式来处理这个问题,那我真是太狭隘了,用函数处理就非常简单了呀,所以会有下面的答案
function checkRecord($string)
{
if ((substr_count($string, "A") > 1) || strpos($string, "LLL") !== false) {
return false;
}
return true;
}
是不是很简单,简单记录一下吧,PHP处理字符串的函数还是很强大的