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
    <?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 に答える
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

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 に答える