我试图计算几个"连胜",特别是连续获胜和失败的最高次数,以及大多数没有获胜的游戏和没有失败的游戏。
我有一根像这样的绳子WWWDDWWWLLWLLLL'
为此,我需要能够返回:
- W charector的最长连续运行(然后我将为L复制)
- 没有W charector的最长连续运行(然后我将为L复制)
我已经找到并调整了以下内容,这些内容将遍历我的数组,并告诉我最长的序列,但我似乎无法调整它以满足上述标准。
非常感谢所有的帮助和学习:)
function getLongestSequence($sequence){
$sl = strlen($sequence);
$longest = 0;
for($i = 0; $i < $sl; )
{
$substr = substr($sequence, $i);
$len = strspn($substr, $substr{0});if($len > $longest)
$longest = $len;
$i += $len;
}
return $longest;
}
echo getLongestSequence($sequence);
您可以使用正则表达式来检测相同字符的序列:
$string = 'WWWDDWWWLLWLLLL';
// The regex matches any character -> . in a capture group ()
// plus as much identical characters as possible following it -> '1+
$pattern = '/(.)'1+/';
preg_match_all($pattern, $string, $m);
// sort by their length
usort($m[0], function($a, $b) {
return (strlen($a) < strlen($b)) ? 1 : -1;
});
echo "Longest sequence: " . $m[0][0] . PHP_EOL;
您可以使用以下代码实现特定字符串中连续字符的最大计数。
$string = "WWWDDWWWLLWLLLL";
function getLongestSequence($str,$c) {
$len = strlen($str);
$maximum=0;
$count=0;
for($i=0;$i<$len;$i++){
if(substr($str,$i,1)==$c){
$count++;
if($count>$maximum) $maximum=$count;
}else $count=0;
}
return $maximum;
}
$match="W";//change to L for lost count D for draw count
echo getLongestSequence($string,$match);