找出字符串中出现次数最多的字
2017-10-12 22:40
162 查看
关于找出一个包含中文和英文的字符串中出现次数最多的字,
自己在网上找了各种解决方法,最后总结出了以下4种方法:
我是用PHP实现的,代码直接复制即用。
$str="法律框架go啊放假了ajg昆仑剑法,发 eoi";
//方法一
$strlen=mb_strlen($str,"utf-8");//获取中文长度,空格也包括
$arr=array();
for($i=0;$i<$strlen;$i++){
$arr[]= mb_substr($str,$i,1,"utf-8");
}
$newarr=array_count_values($arr);
//统计数组中所有值出现的次数,返回数组
//键名为原数组的键值,键值为出现次数
//rsort($newarr);按照键值大到小排序,键名变成数字0,1..
arsort($newarr);//按照键值大到小排序,键名保存不变
$chararr=array_keys($newarr,Max(array_values($newarr)));//取包含指定值的键名
//$chararr=array_keys($newarr,current($newarr));
//方法二
/*
mb_regex_encoding('UTF-8');
mb_internal_encoding("UTF-8");
function mb_str_split($str){
global $arr;//注意这个地方
$temp=mb_split("(?<!^)(?!$)",$str);
$arr[]=$temp[0];
if(mb_strlen($temp[1],"utf-8")>1){
mb_str_split($temp[1]);
}else{
$arr[]=$temp[1];
}
return $arr;
}
mb_str_split($str);
$newarr=array_count_values($arr);
arsort($newarr);
var_dump($newarr);
*/
//方法三
//$arr=preg_split('//u', $str,null,PREG_SPLIT_NO_EMPTY );
//方法四
//$arr=preg_split('/(?<!^)(?!$)/u', $str,null,PREG_SPLIT_NO_EMPTY );
//$arr=preg_split('/(?<!^)(?!$)/u', $str );
//var_dump($arr);
//(?<!expr)和(?!expr)都是零宽断言,前者表示此位置之前不匹配expr,后者表示此位置之后不匹配expr。
//在正则中^和$单独用表示开头和末尾。
//也就是说(?<!^)表示此位置之前不匹配开头,(?!$)表示此位置之后不匹配末尾。
//所以这个split匹配到的部分,为每两个字的中间位置(但是没有匹配到任何实际的字符)
自己在网上找了各种解决方法,最后总结出了以下4种方法:
我是用PHP实现的,代码直接复制即用。
$str="法律框架go啊放假了ajg昆仑剑法,发 eoi";
//方法一
$strlen=mb_strlen($str,"utf-8");//获取中文长度,空格也包括
$arr=array();
for($i=0;$i<$strlen;$i++){
$arr[]= mb_substr($str,$i,1,"utf-8");
}
$newarr=array_count_values($arr);
//统计数组中所有值出现的次数,返回数组
//键名为原数组的键值,键值为出现次数
//rsort($newarr);按照键值大到小排序,键名变成数字0,1..
arsort($newarr);//按照键值大到小排序,键名保存不变
$chararr=array_keys($newarr,Max(array_values($newarr)));//取包含指定值的键名
//$chararr=array_keys($newarr,current($newarr));
//方法二
/*
mb_regex_encoding('UTF-8');
mb_internal_encoding("UTF-8");
function mb_str_split($str){
global $arr;//注意这个地方
$temp=mb_split("(?<!^)(?!$)",$str);
$arr[]=$temp[0];
if(mb_strlen($temp[1],"utf-8")>1){
mb_str_split($temp[1]);
}else{
$arr[]=$temp[1];
}
return $arr;
}
mb_str_split($str);
$newarr=array_count_values($arr);
arsort($newarr);
var_dump($newarr);
*/
//方法三
//$arr=preg_split('//u', $str,null,PREG_SPLIT_NO_EMPTY );
//方法四
//$arr=preg_split('/(?<!^)(?!$)/u', $str,null,PREG_SPLIT_NO_EMPTY );
//$arr=preg_split('/(?<!^)(?!$)/u', $str );
//var_dump($arr);
//(?<!expr)和(?!expr)都是零宽断言,前者表示此位置之前不匹配expr,后者表示此位置之后不匹配expr。
//在正则中^和$单独用表示开头和末尾。
//也就是说(?<!^)表示此位置之前不匹配开头,(?!$)表示此位置之后不匹配末尾。
//所以这个split匹配到的部分,为每两个字的中间位置(但是没有匹配到任何实际的字符)
相关文章推荐
- 笔试:找出一个字符串中字符出现最多的次数和该字符
- Java实现给定任一字符串,长度为任意,要求找出其出现次数最多的字符及其出现次数。
- 找出字符串中连续出现次数最多的子串
- 找出字符串中第一个出现次数最多的字符
- js实现找出字符串中出现字数最多的字符并计算其出现次数
- JAVA找出字符串中连续出现次数最多的字符
- 找出字符串中连续出现次数最多的子串
- [华为机试练习题]61.找出字符串中第一个出现次数最多的字符
- 找出字符串中出现次数最多的字母和出现的次数
- 找出字符串中出现次数最多的字母和出现次数,超精简版,欢迎拍板
- 找出字符串中第一个出现次数最多的字符
- OC 找出在只有空格字母的字符串中出现次数最多的单词
- [百度面试题]找出字符串中连续出现次数最多的子串
- [java] 找出字符串中出现最多的字符和出现的次数
- 找出字符串中出现次数最多的字符,和最大次数
- 问题6: 找出字符串中出现次数最多的字母及其出现的次数
- 找出一个字符串中重复最多的字符以及出现的次数
- 给一段字符串,找出其中出现次数最多的字母及出现的次数(出现最多次数的项只有一个的情况)
- 找出字符串中连续出现次数最多的子串
- 【面试题】找出字符串中连续出现次数最多的子串