用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