От въведен низ от клавиатурата да се намери най-често срещаният символ и да се изведе низа по честота на срещане на символите. При еднакъв брой срещания няма значение кой символ да се изведе предварително.
Например: От низ – “ммпкдсррттмвввпмм”, най-често срещаният символ е “м”.
Низа да се изведе: “мммммвввррттппкдс”
Кратко решение на 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; ?>
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?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
Няма коментари:
Публикуване на коментар