一道算法题,$str="dfmkm中国dfdf45d11cvv"; 如何找到出现最多的字符. $str="dfmkm中国dfdf45d11cvv"; 如何找到出现次数最多的字符. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这个要写函数了步骤:str_split()分割函数(涉及英文和中文的区别),循环得出N个个体.放在数组里面。比如array[0]------array[n]比较数组之间的值。计算有多少数组的值相同;建立一个NUM的函数,算算有多少个。最后再比较一下那个最多。应该就可以了吧 <?$str="dfmkm中国dfdf45d11cvv"; $arr=str_split($str);$newarr=array_count_values($arr);arsort($newarr);echo $newarr[ key($newarr)];?> <?$str="dfmkm中国dfdf45d11cvv"; $arr=str_split($str);$newarr=array_count_values($arr);arsort($newarr);echo "出现最多的字符是:<font color=red>".key($newarr)."</font>,出现次数为:".$newarr[key($newarr)];?>中文乱码了你自己再处理一下中文的情况吧 这个很容易啊,用MB开头的函数:<?php$str="dfmkm中国dfdf45d11cvv";for($i=0,$d=mb_strlen($str)-1;$i<$d;$i++){$r[]=mb_substr($str,$i,1,"GBK");}$res=array_count_values($r);arsort($res);echo "以下字符串";echo "<p>$str</p>";echo "被分割为:<pre>";print_r($r);echo "</pre>";echo "经过分析:";echo "<p>".key($res)."</p>";echo "是最多次数的";?>经过测试是可以的:结果为:以下字符串dfmkm中国dfdf45d11cvv被分割为:Array( [0] => d [1] => f [2] => m [3] => k [4] => m [5] => 中 [6] => 国 [7] => d [8] => f [9] => d [10] => f [11] => 4 [12] => 5 [13] => d [14] => 1 [15] => 1 [16] => c [17] => v [18] => v [19] => )经过分析:d是最多次数的 第一次用到mb的函数,增长见识了最后8楼要mb_strlen($str,"GBK") 这样才正确输出中文 fopen r+ 提示Permission denied错误 修改一个函数---有高手可以修改成取文件吗 xml创建和解析问题 大家谁知道discuz的数据库连接语句在那里啊, 一般我们做项目,最常修改php.ini 的什么配置呢? smarty问题!! php在线编辑器 插入图片表格问题 帮帮忙,我快郁闷死了,apache+php配置问题 日期格式化问题,在线等待!(e.g: 2002-9-7 -> 2002年9月7日) session里面到底有什么? php 验证码 session [ ajax xmlhttp.responseText 问题
步骤:
str_split()分割函数(涉及英文和中文的区别),循环得出N个个体.放在数组里面。
比如array[0]------array[n]
比较数组之间的值。计算有多少数组的值相同;
建立一个NUM的函数,算算有多少个。最后再比较一下那个最多。应该就可以了吧
$str="dfmkm中国dfdf45d11cvv";
$arr=str_split($str);
$newarr=array_count_values($arr);
arsort($newarr);
echo $newarr[ key($newarr)];
?>
$str="dfmkm中国dfdf45d11cvv";
$arr=str_split($str);
$newarr=array_count_values($arr);
arsort($newarr);
echo "出现最多的字符是:<font color=red>".key($newarr)."</font>,出现次数为:".$newarr[key($newarr)];
?>中文乱码了
你自己再处理一下中文的情况吧
$str="dfmkm中国dfdf45d11cvv";
for($i=0,$d=mb_strlen($str)-1;$i<$d;$i++)
{
$r[]=mb_substr($str,$i,1,"GBK");
}
$res=array_count_values($r);
arsort($res);
echo "以下字符串";
echo "<p>$str</p>";
echo "被分割为:<pre>";
print_r($r);
echo "</pre>";
echo "经过分析:";
echo "<p>".key($res)."</p>";
echo "是最多次数的";
?>经过测试是可以的:
结果为:
以下字符串dfmkm中国dfdf45d11cvv
被分割为:Array
(
[0] => d
[1] => f
[2] => m
[3] => k
[4] => m
[5] => 中
[6] => 国
[7] => d
[8] => f
[9] => d
[10] => f
[11] => 4
[12] => 5
[13] => d
[14] => 1
[15] => 1
[16] => c
[17] => v
[18] => v
[19] =>
)经过分析:d
是最多次数的