последовательное вхождение характера

номер последовательного появления символа, за которым следует символ

Ex вход: ‘Zzzyyyyxxxwwvzz’

ожидаемый результат: ‘3z4y3x2w1v2z’

код, который я пробовал

<?php
$str = "zzzyyyyxxxwwvzz";
$strArray = count_chars($str,1);

foreach ($strArray as $key=>$value)
{
echo $value.chr($key);
}
?>

выходной: 5z4y3x2w1v

2

Решение

  • С помощью str_split функция, получить все символы в данной строке в массиве
  • Теперь, используя базовые циклы и условные выражения и сохраняя предыдущий символ, вы можете определить, является ли он последовательным или нет, и, соответственно, получить сгенерированную выходную строку.

Попробуйте следующее (объяснение в комментариях к коду):

$input = 'zzzyyyyxxxwwvzz';

// Split full string into array of single characters
$input_chars = str_split($input);

// initialize some temp variables
$prev_char = '';
$consecutive_count = 0;

$output = '';

// Loop over the characters
foreach ($input_chars as $char) {

// first time initialize the previous character
if ( empty($prev_char) ) {
$prev_char = $char;
$consecutive_count++;
} elseif ($prev_char === $char) { // current character matches previous character
$consecutive_count++;
} else { // not consecutive character
// add to output string
$output .= ($consecutive_count . $prev_char);

// set current char as new previous_char
$prev_char = $char;
$consecutive_count = 1;
}
}

// handle remaining characters
$output .= ($consecutive_count . $prev_char);
echo $output;
1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector