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

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()

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值