演员的技能用字母A-Z表示,某活动需要演员按顺序完成任务,完成得最多的,可获得奖励。由于演员多才多艺,提前告知任务顺序,很容易完成任务。现在让演员随意表演,最后公布活动任务最长匹配度。如一个演员表演顺序 ABCBDAB,最后活动顺序为BDCABA,那么最大匹配度值为4(匹配值为BCBA或者BDAB)。现在编写程序实现以上功能:
<?php
$a = 'ABCBDAB';
$b = 'BDCABA';
$aStrlen = strlen($a);
$bStrlen = strlen($b);
$maxCount = 0;
for ($i=0; $i < $aStrlen; $i++) {
$ch = $a[$i];
$aIdx = $i;
$bIdx = 0;
$count = 0;
$next = false;
for ($j=$bIdx;$j<$bStrlen; $j++) {
if($ch == $b[$j]){
$count++;
$bIdx = $j;
$next = true;
}
if($j == $bStrlen-1 && $count != 0 && $aIdx < $aStrlen){
$j = $bIdx;
$next = true;
}
if($next){
if(++$aIdx == $aStrlen){
break;
}
$next = false;
$ch = $a[$aIdx];
}
}
if($count > $maxCount){
$maxCount = $count;
}
//假如最大次数大于剩余要比较的字符串,则break
if($maxCount >= $aStrlen-$i){
break;
}
}
echo $maxCount;
已有 0 条评论