微信号:phpdaily

介绍:PHP在线专注于PHP编程语言学习,PHP开发经验分享,工作问题解决以及PHP在线技能测评等多功能为一体的服务系统,希望给工作学习中的PHPER带来些帮助。

如何知道一个未知长度的字符串哪个字符出现的次数最多?

2018-07-02 21:43 南宫尘

微信公众号:PHP在线

问:

如何知道一个未知长度的字符哪个出现的次数最多?(字符串可由字母,数字以及其他字符组成)

第一种解法:
function getLen($str){
   $reg = array();
   $len = strlen($str);
   for($i=0;$i<$len;$i++){
       $k = substr($str,$i,1);
       //遍历每个字符,然后判断是否在数组$reg里面,有的话加1,没的话存储到$reg
       if(array_key_exists($k, $reg)){
           $reg[$k] = $reg[$k]+1;
       }else{
           $reg[$k] = 1;
       }
   }
   arsort($reg);//保留key值,把value从大到小排序
   printf("最多的字符:%s,次数:%d",key($reg),reset($reg));
}
第二种解法:
function getLen1($str){
   $reg = array();
   $len = strlen($str);
   for($i=0;$i<$len;$i++){
       $l = substr($str,$i,1);
       $t = substr_count($str, $l); // 统计字符出现的次数
       $reg[$l] =$t; //以key为字符,value为次数保存
   }
   arsort($reg);
   printf("最多的字符:%s,次数:%d",key($reg),reset($reg));
}
第三种解法:
$test = 'djasflkj2l3fjosadf,a.,gdflgk';
$testArr = str_split($test); //分割字符串
$sortArr = array_count_values($testArr);//统计数组中所有值出现的次数
arsort($sortArr);
printf("最多的字符:%s,次数:%d",key($reg),reset($reg));

三种方法结果都是一样的,但是综合比较来看,第三种是最好的,其他的只是解题思路。


 
PHP在线 更多文章 交换两个变量值,不使用第三个变量的实现方法 PHP面试题 Redis数据结构详解,五种数据结构分分钟掌握 PHP实现四种基本排序算法 网站高并发解决方案(理论知识)
猜您喜欢 从工业而生,服务工业互联,现已开启服务于智能制造数字化转型之路 –GE Predix工业互联网服务平台 Android之RootTools框架简单使用 技术团队的标准化与可复用文化 干货!8个绝对实用的 Excel 公式 熬夜并不值得程序员炫耀