在一大堆长字符串中,查找出现频率最高的连续的五个字符,例:我是中国人我是外国人我是韩国人我是美国人我是中国人我是英国人我是中国人我是外国人
就返回我是中国人,因为我是中国人出现的频率最高,这怎么做啊??我刚刚接触php,啥都不会,求帮助,字符串里可能有特殊字符啥的,连续的字符数暂时是五个,也可能是三个,四个的,
求帮助,多给几个方法
这次是根据不同 的字符串长度,选择效率高的那一种方法,
就是判断一下字符串的长度,然后调用最适合的方法。
就返回我是中国人,因为我是中国人出现的频率最高,这怎么做啊??我刚刚接触php,啥都不会,求帮助,字符串里可能有特殊字符啥的,连续的字符数暂时是五个,也可能是三个,四个的,
求帮助,多给几个方法
这次是根据不同 的字符串长度,选择效率高的那一种方法,
就是判断一下字符串的长度,然后调用最适合的方法。
解决方案 »
- 棒棒忙这个函数到底是讲的什么意思啊?
- 想用php开发一个wap网站
- select语句加了索引条件过滤,执行效率反而比全表扫描更慢,这是怎么回事?
- ajax,页面如何接收php返回的二维数组,急!!!
- file_get_content() 怎么定义 能否给个代码提示最好是给个全的好使的 !
- 请大家推荐一个适合中学用的php+mysql网站源代码
- MYSQL数据备份分析,大家看看我这样子备份会不会有问题。
- 请问现在最新的PHP5中的DOM(DOMXML)是否支持中文编码?
- 菜鸟问题:简单函数转换(asp转php)
- 求助,这段js怎么转成php使用,谢谢
- PHP xajax 提交时出现the xml response that was returned from the server is invalid 错误
- 关于 FCKeditor 的问题,麻烦高手进来下,谢谢
5年前做这个已经做到头痛,代码现在不想写了1.拆字->数组1
2.求数组1不重复的值,就是字串中有多少个不同的字->数组2
3.每个字出现的次数
4.按次数排序
5.按次数多->少组合数组2的字(个数就是你定义的)(注意:这里是排列组合的问题,不光是组合)
6.检查这个组合在字串中出现的次数
……
最后,这个东西不好玩,写出来后马上有扔掉的念头
我前天晚上才装上php,啥都不会啊
$str = '我是中国人我是外国人我是韩国人我是美国人我是中国人我是英国人我是中国人我是外国人';print_r(my_str_count($str, 5, 'UTF-8'));
function my_str_count($str = '', $len = 0, $charset = 'UTF-8')
{
$arr = $res = array();
$max = 0;
if($len <= 0)
{
return false;
}
for($i=0,$n=mb_strlen($str, $charset)-$len;$i<=$n;$i++)
{
$tmp = mb_substr($str, $i, $len, $charset);
$arr[$tmp] = !isset($arr[$tmp]) ? 1 : ($arr[$tmp] + 1);
if($arr[$tmp] > $max)
{
$max = $arr[$tmp];
}
}
foreach($arr AS $k => $v)
{
if($v == $max)
{
$res[$max][] = $k;
}
}
return $res;
}
O(n)的复杂度,返回是个数组,下标是字符串出现次数,元素是,出现key次的不同字符串Array
(
[3] => Array
(
[0] => 我是中国人
[1] => 是中国人我
[2] => 中国人我是
)
)
为什么我这里的效果是这样的啊Array ( [3] => Array ( [0] => 是中国人我是 ) )
我想不明白啊,
接触编程还没有多长时间,
php更是昨天才开始接触……