如何在不使用任何内置PHP函数的情况下搜索字符串中连续重复的字符


how to search for consecutive repeated characters in a string without using any built-in php functions?

我被要求解决这个问题。请告诉我如何解决这个问题。

$string = "kkjnmnmnjjjnmn";

这里我需要找到长度为3的连续重复字符串。例如,KKJ只出现了一次,JNM出现了2次,NMN出现了3次。

从第一个字符开始,向右方向,连续输出3个重复不止一次的字符。

Preg_match_all will result as nmn - 2 times and not as 3 times.

如何解决这个问题?

    $string = "kkjnmnmnjjjnmn";
    $length = strlen($string);
    $pieces = [];
    for ($i = 0; $i < $length - 2; $i++) {
        $piece = substr($string, $i, 3);
        if (array_key_exists($piece, $pieces)) {
            $pieces[$piece] += 1;
        } else {
            $pieces[$piece] = 1;
        }
    }

//$pieces将包含您需要的内容

这个没有使用任何内置函数,试试

$string = "kkjnmnmnjjjnmn";
$i = 0;
$strarr = array();
while(isset($string[$i+2])){
if(!isset($strarr[$string[$i].$string[$i+1].$string[$i+2]]))
    $strarr[$string[$i].$string[$i+1].$string[$i+2]] = 1;
else
    $strarr[$string[$i].$string[$i+1].$string[$i+2]] += 1;
$i++;
}
print_r($strarr);

我是这么想的

$arr = array();
for ($i = 0; $i <= strlen($string) - 3; $i++) {
    $part = substr($string, $i, 3);
    if (array_key_exists($part, $arr)) {
        $arr[$part]++;
    } else {
        $arr[$part] = 1;
    }
}
foreach ($arr as $key => $value) {
  //output the result
}

我不是PHP专家,但在检查了前面的答案后,我发现了一个新的解决方案,这里是:

$string='aaaabcdeeeffaaabh';
$arr_str=array();
for($i=0;$i<strlen($string);$i++)
{
    if(in_array($string[$i],$arr_str[$char[$i]]))
    {
       $arr_str[$string[$i]]=1;
    }
    else
    {
       $arr_str[$string[$i]]+=1;
     }
}
 foreach($arr_str as $key => $value)
  {
    echo $key.' Repeats '.$value.' Times'.'<br/>';
  }
输出:

a Repeats 7 Times
b Repeats 2 Times
c Repeats 1 Times
d Repeats 1 Times
e Repeats 3 Times
f Repeats 2 Times
h Repeats 1 Times