简体   繁体   中英

php: least/most frequent character

I am looking for the easiest and fastest way to get the most and the least frequent character from a string. I am using PHP

 $string = "google is good";

o being the most and i, l, e or d being the least. This is just a made up example

You can use count_chars(string,mode) method of php to count numbers of characters in a string. More About : count_chars()

<?php
    $str = "google is good";
    $strArray = count_chars($str,1);

    $leastArray = array_keys($strArray, min($strArray));
    $mostArray = array_keys($strArray, max($strArray));

    echo "Least<br />";
    foreach ($leastArray as $key=>$value) {
        echo "The character <b>'". chr($value). "'</b><br />";
    }
    echo "Most<br />";
    foreach ($mostArray as $key=>$value) {
        echo "The character <b>'". chr($value). "'</b><br />";
    }
?>
$long_string = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam vulputate cursus sem, quis dapibus nunc accumsan eget. Fusce gravida vulputate risus vel ultrices. Morbi rhoncus ultricies tellus, non facilisis lorem ullamcorper id. Ut ultricies ligula quis nulla tristique pellentesque. Maecenas pellentesque, magna id porttitor ullamcorper, eros neque convallis dolor, eu suscipit lorem massa sit amet ligula. Integer nec ante id leo sagittis accumsan. Donec eu maximus libero. Donec vitae enim ut ligula placerat interdum. Aenean consequat, diam mattis euismod tempus, turpis lorem faucibus nulla, sed gravida justo nulla in ex. Ut vel consectetur lorem. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam vulputate cursus sem, quis dapibus nunc accumsan eget. Fusce gravida vulputate risus vel ultrices. Morbi rhoncus ultricies tellus, non facilisis lorem ullamcorper id. Ut ultricies ligula quis nulla tristique pellentesque. Maecenas pellentesque, magna id porttitor ullamcorper, eros neque convallis dolor, eu suscipit lorem massa sit amet ligula. Integer nec ante id leo sagittis accumsan. Donec eu maximus libero. Donec vitae enim ut ligula placerat interdum. Aenean consequat, diam mattis euismod tempus, turpis lorem faucibus nulla, sed gravida justo nulla in ex. Ut vel consectetur lorem. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam vulputate cursus sem, quis dapibus nunc accumsan eget. Fusce gravida vulputate risus vel ultrices. Morbi rhoncus ultricies tellus, non facilisis lorem ullamcorper id. Ut ultricies ligula quis nulla tristique pellentesque. Maecenas pellentesque, magna id porttitor ullamcorper, eros neque convallis dolor, eu suscipit lorem massa sit amet ligula. Integer nec ante id leo sagittis accumsan. Donec eu maximus libero. Donec vitae enim ut ligula placerat interdum. Aenean consequat, diam mattis euismod tempus, turpis lorem faucibus nulla, sed gravida justo nulla in ex. Ut vel consectetur lorem. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam vulputate cursus sem, quis dapibus nunc accumsan eget. Fusce gravida vulputate risus vel ultrices. Morbi rhoncus ultricies tellus, non facilisis lorem ullamcorper id. Ut ultricies ligula quis nulla tristique pellentesque. Maecenas pellentesque, magna id porttitor ullamcorper, eros neque convallis dolor, eu suscipit lorem massa sit amet ligula. Integer nec ante id leo sagittis accumsan. Donec eu maximus libero. Donec vitae enim ut ligula placerat interdum. Aenean consequat, diam mattis euismod tempus, turpis lorem faucibus nulla, sed gravida justo nulla in ex. Ut vel consectetur lorem. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam vulputate cursus sem, quis dapibus nunc accumsan eget. Fusce gravida vulputate risus vel ultrices. Morbi rhoncus ultricies tellus, non facilisis lorem ullamcorper id. Ut ultricies ligula quis nulla tristique pellentesque. Maecenas pellentesque, magna id porttitor ullamcorper, eros neque convallis dolor, eu suscipit lorem massa sit amet ligula. Integer nec ante id leo sagittis accumsan. Donec eu maximus libero. Donec vitae enim ut ligula placerat interdum. Aenean consequat, diam mattis euismod tempus, turpis lorem faucibus nulla, sed gravida justo nulla in ex. Ut vel consectetur lorem.";

// set the starting microtime
$debug_start = (float) array_sum(explode(' ',microtime()));

// count the characters of the string
$char_count = count_chars($long_string, 1);

// set the ending microtime
$end = (float) array_sum(explode(' ',microtime()));


// how long did this take?
var_dump($section." processing time: ". sprintf("%.4f", ($end-$debug_start))." seconds");

// returns 0.0000 seconds

// sorts the array from highest to lowest occurence
arsort($char_count);

// dump out the array
var_dump($char_count);

Due to the fact that count_chars() returns 0.0000 seconds on a long string, it would be pointless to look any further into better performing code unless you are working with massive strings and data sets. PHP's count_chars() is very efficient.

The arsort sorts the array for you by highest to lowest values.

Below code will give you an array with the characters with highest and lowest repeating characters in the given string:

$string = "google is good";
$ar = str_split(str_replace(' ', '', $string)); //removing white spaces and making array with each element
$c =array_count_values($ar); //counting each elements in the array
print_r(array_keys($c, max($c))); // most repeating
print_r(array_keys($c, min($c))); // least repeating

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM