Посимвольная обработка строк
Решение
Цикл по символам строки с помощью оператора for. В этом примере подсчитываются гласные в строке:
$string = "This weekend, I'm going shopping for a pet chicken.";
$vowels = 0;
for ($i = 0, $j = strlen($string); $i < $j; $i++) {
if (strstr('aeiouAEIOU',$string[$i])) {
$vowels++;
}
}
Обсуждение
Посимвольная обработка – это самый простой способ подсчета после довательности «Смотри и говори»:
function lookandsay($s) {
// инициализируем возвращаемое значение пустой строкой
$r = '';
// переменная $m, которая содержит подсчитываемые символы,
// инициализируется первым символом * в строке
$m = $s[0];
// $n, количество обнаруженных символов $m, инициализируется значением 1
$n = 1;
for ($i = 1, $j = strlen($s); $i < $j; $i++) {
// если символ совпадает с последним символом
if ($s[$i] == $m) {
// увеличиваем на единицу значение счетчика этих символов
$n++;
} else {
// иначе добавляем значение счетчика и символа к возвращаемому значению
$r .= $n.$m;
// устанавливаем искомый символ в значение текущего символа
$m = $s[$i];
// и сбрасываем счетчик в 1
$n = 1;
}
}
// возвращаем построенную строку, а также последнее значение счетчика и символ
return $r.$n.$m;
}
for ($i = 0, $s = 1; $i < 10; $i++) {
$s = lookandsay($s);
print "$s\n";
}
1
11
21
1211
111221
312211
13112221
1113213211
31131211131221
13211311123113112211
Это называется последовательностью «Смотри и говори», поскольку каждый элемент мы получаем, глядя на предыдущие элементы и говоря, сколько их. Например, глядя на первый элемент, 1, мы говорим «один». Следовательно, второй элемент – «11», то есть две единицы, поэтому третий элемент – «21». Он представляет собой одну двойку и одну единицу, поэтому четвертый элемент – «1211» и т. д.
Комментарии:
Комментариев нет
|
|
|