PHP找出字符串中连续重复次数最多的字符

原创
小哥 2年前 (2023-05-16) 阅读数 38 #大杂烩

PHP面试过程中经常遇到这类算法题目:

话不多说直接上代码:

//找出字符串中连续重复次数最多字
$str = bbcccychrisQxnnddemdereeeeeffetcsssssssssssssfggdddreggggaggaggaaadddddddddddddaass;
$str_arr = str_split($str);//字符串拆解为数组
$map_arr = array_flip($str_arr);//数组键值反转(反转后会自动去重)
$over_arr = [];//结果数组
foreach ($str_arr as $k => $v) {
    if ($k == 0 || $v != $str_arr[$k - 1]) {
        $map_arr[$v] = $v;
        continue;
    }
    $map_arr[$v] .= $v;
    if (!isset($over_arr[$v]) || strlen($over_arr[$v]) < strlen($map_arr[$v])) {
        $over_arr[$v] = $map_arr[$v];
    }
}
$result = [];
$max_len = 0;
foreach ($over_arr as $key => $value) {
    $str_len = strlen($value);
    if ($max_len < $str_len) {
        $max_len = $str_len;
        $result = [
             $key => $str_len
        ];
    }
    if ($max_len == $str_len) {
        $result[$key] = $str_len;
        continue;
    }
    if ($max_len > $str_len) {
        continue;
    }
}
var_dump($over_arr,$result);

该处打印结果为:

可以利用函数array_count_values()

版权声明

所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除

热门