找出字符串中,连续重复次数最多的字符
今天在群聊中,有个群友给一道这样的面试题,记录一下,需要找出连续重复最多的,而不是重复最多的。
<?php function get_repstr ($str){ $str_arr = str_split($str); //把字符串分割到数组 $map_arr = array_flip(array_unique($str_arr)); //去重,并把键-值交换 $over_arr = []; //结果容器 for ($i=0; $i<strlen($str); $i++){ //按照个数循环 //下标为0的,或者当前与前一个不重复的,直接写入,跳过。 if ($i === 0 || ($str_arr[$i] !== $str_arr[$i-1]) ){ $map_arr[$str_arr[$i]] = $str_arr[$i]; continue; } //排除特殊条件,记录重复字符串 $str_in = $map_arr[$str_arr[$i]] .= $str_arr[$i]; // 对比该字符的长度,如果旧记录比新记录短,就更新,否则还是旧记录最大,忽略新记录。 strlen($over_arr[$str_arr[$i]]) < strlen($str_in)? $over_arr[$str_arr[$i]] = $str_in :null; } return $over_arr; } $str = bychrisQxnnddemdereeeeeffetcssssssfggdddreggggaggaggaaadddddddddddddaass; $a = get_repstr($str); print_r($a); //Array //( // [n] => nn // [d] => ddddddddddddd // [e] => eeeee // [f] => ff // [s] => ssssss // [g] => gggg // [a] => aaa //)
完整实例: