2017-02-26 93 views
1

我正在寻找最简单和最快速的方式来从字符串中获取最多和最不频繁的字符。我正在使用PHPphp:最少/最频繁的字符

$string = "google is good"; 

o是最多的,i,l,e或d是最少的。这只是一个编造的例子

回答

3

您可以使用count_chars(string,mode)方法来计算字符串中的字符数。更多关于: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 />"; 
    } 
?> 
+0

非常感谢您 –

+0

你最欢迎。 –

1
$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); 

由于事实count_chars()返回上一个长字符串0.0000秒,这将是毫无意义的进一步研究任何到性能更好的代码,除非你有大量的字符串和数据集工作。 PHP的count_chars()非常高效。

arsort按从高到低的顺序排列数组。

1

下面的代码会给你一个数组用最高和最低的重复给定的字符串中的字符中的字符:

$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