1

我想输入像“RKKRRRRK”这样的输入,并尝试得到像最大连续段这样的输出。假设我的输入可能是“RKKKR”,那么我的程序将显示“KKK”是最大的连续段。然后它也显示计数是 3..

我已经编写了用于计算“R”值的代码..现在我也想要这个程序......需要帮助任何人帮助我..提前谢谢。

这里的代码: -

<?php

    function numberOfR($string1) 
    {

        for($i=0;$i <strlen($string1);$i++)
        {
            if($string1[$i]!='K') 
            {
                $count++;
            }
        }
        return $count;
    }
    $return_value= numberOfR("RKKRK");
    echo "R's count is:";
    echo $return_value;
?>
4

4 回答 4

0

你可以preg_match_all在这里使用

preg_match_all('/(.)\1+/i','RKKRRRRK',$res);
usort($res[0],function($a,$b){
    return strlen($b) - strlen($a);
});
echo $res[0][0];
于 2015-09-04T13:02:46.680 回答
0

不知道我是否理解得很正确。像这样的东西:

function maxCharSequece($string1) 
{
    $maxSeq = $seq = 0;
    $maxChar = $lastChar = null;

    for( $i = 0; $i < strlen($string1); $i++ )
    {
        $c = $string1[$i];

        if (!$lastChar) $lastChar = $c;

        if ( $lastChar == $c ){
            if ( ++$seq > $maxSeq ) $maxChar = $lastChar;
        }
        else {
            $maxSeq = $seq;
            $seq = 0;
        }
    }

    return $maxChar;
}
于 2015-09-04T13:14:21.333 回答
0

您可以使用 preg_replace_callback 接收所有连续的段并选择最长的

$sq = '';
preg_replace_callback('/(.)\1+/', 
                      function ($i) use (&$sq) { 
                        if(strlen($i[0]) > strlen($sq)) $sq = $i[0]; 
                      },  $str);    
echo  $sq . " " . strlen($sq);
于 2015-09-04T13:25:28.830 回答
0
    <?php
    function getLongetSegment($string) {
        $currentSegmentChar='';
        $currentSegment="";
        $biggestSegment="";
        $current_length=0;
        $biggest_length=0;
        for($i=0;$i<strlen($string);$i++) {
            $char = $string[$i];
                if($char != $currentSegmentChar || $currentSegmentChar == '') {
                    if($current_length >= $biggest_length) {
                        $biggestSegment = $currentSegment;
                        $biggest_length = $current_length;
                    }
                    $currentSegmentChar = $char;
                    $currentSegment = $char;
                    $current_length = 1;
                }
                elseif($currentSegmentChar != '') {
                    $currentSegment .= $char;
                    $current_length++;
                }
        }
        if($current_length >= $biggest_length) {
            $biggestSegment = $currentSegment;
        }
        return array("string" => $biggestSegment,"length" => $biggest_length);
    }   
    print_r(getLongetSegment("RKKRGGG"));
?>

结果:GGG

于 2015-09-04T13:35:02.670 回答