题目17

给定一个字符串

只包含大写字母

求在包含同一字母的子串中

长度第K长的子串

相同字母只取最长的子串

输入

第一行

一个子串 1<len<=100

只包含大写字母

第二行

为k的值

输出

输出连续出现次数第k多的字母的次数

例子:

输入

AABAAA

2

输出

1

同一字母连续出现最多的A 3次

第二多2次 但A出现连续3次

输入

AAAAHHHBBCDHHHH

3

输出

2

如果子串中只包含同一字母的子串数小于k 则输出-1

<?php
$s=fgets(STDIN);
$k=fgets(STDIN);
solution($s,$k);

function solution($s,$k)
{
    $char=str_split($s,1);
    if (count($char)==0){
        echo -1;
        return;
    }
    $cur=$char[0];
    $count=1;
    $map[$cur]=$count;
    for ($i=1;$i<count($char);$i++){
        $c=$char[$i];
        if($c==$cur) $count++;
        else{
            $cur=$c;
            $count=1;
        }
        $map[$cur]=isset($map[$cur])?
            $map[$cur]>$count?$map[$cur]:$count
            :$count;
    }
    rsort($map);
    if($k>count($map)){
        echo -1;
        return;
    }
    echo $map[$k-1];
}

 

posted @ 2022-07-16 16:44  weigm*  阅读(31)  评论(0)    收藏  举报