2013-11-02 4 views
-1

У меня есть строка AABBBCCCDABBAACBB, в этом мне нужно найти наибольшее количество символов, как я могу найти это?Наиболее часто встречающееся письмо в строке с использованием php-функции

В приведенной выше строке он должен возвращать 7 объявлений В приходит 7 раз максимум i.e.

$str = "AABBBCCCABB"; 
$strArray = count_chars($str,1); 

foreach ($strArray as $key=>$value) 
{ 
    echo "The character <b>'".chr($key)."'</b> was found $value time(s)<br>"; 
    //$highest=chr($key); 
    if(isset($highest) && $highest>chr($key)) 
    { 
     $highest=chr($key); 
    } 
} 
echo "<br/><br/>Highest value is ::".$highest; 

выше кода я попытался,

я пытался, но функциональность не является совершенным, что функция php я должен использовать?

+0

"Функциональность не является совершенным" является _really_ беден описание проблемы. Пожалуйста, постарайтесь предоставить хотя бы немного больше информации о _how_, код не делает то, что вы хотите. (Тем не менее, я вижу некоторые очевидные ошибки в вашем коде, поэтому просто «не возвращает правильное значение» было бы адекватным описанием в данном конкретном случае.) –

ответ

2

Вам не нужна петля для этого. Используйте , чтобы найти ключ наиболее неоднократного значения, и использовать chr() на нем:

$str = "AABBBCCCDABBAACBB"; 
$strArray = count_chars($str,1); 
echo chr(array_search(max($strArray), $strArray)); 

Выход:

B 

Demo!

+0

... Принято как ответ, я пометил еще одну ошибку, так что эта метка исчезла – anam

+0

@simmisimmi: Рад, что я мог бы помочь. Просто FYI: вы не можете [принять] (http://meta.stackexchange.com/a/5235/220538) более одного ответа. :) –

2
$string="AABBBCCCABB"; 
foreach (str_split($string) as $s){ 
    if (isset($counts[$s])) continue; 
    $counts[$s]=substr_count($string, $s); 
    echo "The character <b>'" . $s . "'</b> was found ".$counts[$s]." time(s)<br>"; 
} 
$maxs=array_keys($counts, max($counts)); 
echo "Highest value is ::'".$maxs[0]; 
+0

ПОЧЕМУ У ВАС ОТВЕТ ВАШ ОТВЕТ >> ??? СОБЫТИЕ, ЧТО БЫЛО РАБОТАТЬ? – anam

+1

Пожалуйста, не кричите людям, которые помогают. –

+0

не кричать, что это просто по ошибке колпачки на .... я пытался его код ... @ popnoodles thnx buddy – anam

0

решение для вашего кода на вашем пути:

$str = "AABBBCCCABB"; 
$strArray = count_chars($str,1); 
$highest = $str[0]; 
$times = 0; 

foreach ($strArray as $key=>$value){ 
    echo "The character <b>'".chr($key)."'</b> was found $value time(s)<br>"; 
    //$highest=chr($key); 
    if($times < $value) 
    { 
     $times = $value; 
     $highest=chr($key); 
    } 

} 

    echo "<br/><br/>Highest value is ::".$highest; 

Но ответ Alma Do лучше использовать.

0

Вы также можете использовать функцию max():

$str = "AABBBCCCABB"; 
$strArray = count_chars($str,1); 
$highest = max($strArray); 
foreach ($strArray as $key=>$value) { 
    echo "The character <b>'" . chr($key) . "'</b> was found $value time(s)<br>"; 
} 
echo "<br/><br/>Highest value is ::" . $highest; 
0

Попробуйте это решение, надеюсь, это поможет вам решить.

$string = "AABBBCCCABB"; 
$letters = array_count_values(str_split($string)); 
$val = array_search(max($letters), $letters); 
echo $val; 
0

Попробуйте это ..

echo maxCountChar("AABBBCCCDABBAACBB"); 

function maxCountChar($string){ 
    foreach (str_split($string) as $s){ 
     $counts[$s]=substr_count($string, $s); 
    } 
    $maxs=array_keys($counts, max($counts)); 
    $num = substr_count($string, $maxs[0]); 
    return "The character <b>$maxs[0]</b> was found <b>$num</b> times"; 
} 

Выход

The character B was found 7 times 
Смежные вопросы