用php找出字符串中连续重复次数最多的字符,你有方法吗?

 

找出字符串中连续重复次数最多的字符,这里总结了几种方法,不管是在开发中,还是在面试中都会遇到。

方法一

复制代码
<?php 
$arr = str_split($str);
//字符串分隔到数组中

$arr = array_count_values($arr);
//用于统计数组中所有值出现的次数,返回一个数组

//键名为原数组的键值,键值为出数
arsort($arr);//按键值倒序
echo "";
print_r($arr);
复制代码

 

 

 

方法二:

复制代码
<?php 
$arr = str_split($str);
$con = array();

foreach ($arr as $v){

   if(!@$con[$v]){
      $con[$v]=1;
   }else{undefined

      $con[$v]++;
   }

}

arsort($con);
print_r($con);
复制代码

 

 

 

方法三

复制代码
<?php 
$arr = str_split($str);

$unique = array_unique($arr);
//移除数组中重复的值,并返回结果数组(键名不变);
print_r($unique);

foreach($unique as $v){undefined
   $arr2[$v] = substr_count($str,$v);
   //substr_count():计算某字符在字符串中出现的次数
}

arsort($arr2);
print_r($arr2);
复制代码

 

 

 

》》》程序员福利《《《

例子:

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])         $over_arr[$v] = $map_arr[$v];
    }
}
$result = [];
$max_len = 0;
foreach ($over_arr as $key => $value) {
    $str_len = strlen($value);
    if ($max_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);
复制代码

 

 

 

打印的结果如下:

 

https://www.shanhubei.com/archives/55316.html

posted @   珊瑚贝博客  阅读(27)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
历史上的今天:
2023-05-06 KubeSphere部署流程
点击右上角即可分享
微信分享提示