От въведен низ от клавиатурата да се намери най-често срещаният символ и да се изведе низа по честота на срещане на символите. При еднакъв брой срещания няма значение кой символ да се изведе предварително.
Например: От низ – “ммпкдсррттмвввпмм”, най-често срещаният символ е “м”.
Низа да се изведе: “мммммвввррттппкдс”
Кратко решение на PHP, защото само това имам инсталирано в момента:
<?php
$string = 'tabdaderdty';
$counter = array_fill(0, 255, 0);
for ($i = 0; $i < strlen($string); $i++) {
$counter[ord($string[$i])]++;
}
arsort($counter);
echo $string.PHP_EOL;
foreach($counter as $k => $v){
if ($v == 0) {
break;
}
echo str_repeat(chr($k), $v);
}
echo PHP_EOL;
?>Принципът е следния:
Създаваме масив с 255 елемента и стойности 0 за всеки един елемент. След това обхождаме символния низ и увеличаваме стойността на брояча за всеки срещнат масив (индекса на масива е ASCII стойността на символа). След това сортираме низходящо масива с броячите и показваме по n елемента за всяко n > 0.
$php redica.php tabdaderdty dddttaaebyr
Няма коментари:
Публикуване на коментар