今天在群聊中,有个群友给一道这样的面试题,记录一下,需要找出连续重复最多的,而不是重复最多的。
<?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
//)
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。