在一大堆长字符串中,查找出现频率最高的连续的五个字符,例:我是中国人我是外国人我是韩国人我是美国人我是中国人我是英国人我是中国人我是外国人
就返回我是中国人,因为我是中国人出现的频率最高,这怎么做啊??我刚刚接触php,啥都不会,求帮助,字符串里可能有特殊字符啥的,连续的字符数暂时是五个,也可能是三个,四个的,
求帮助,多给几个方法
这次是根据不同 的字符串长度,选择效率高的那一种方法,
就是判断一下字符串的长度,然后调用最适合的方法。
就返回我是中国人,因为我是中国人出现的频率最高,这怎么做啊??我刚刚接触php,啥都不会,求帮助,字符串里可能有特殊字符啥的,连续的字符数暂时是五个,也可能是三个,四个的,
求帮助,多给几个方法
这次是根据不同 的字符串长度,选择效率高的那一种方法,
就是判断一下字符串的长度,然后调用最适合的方法。
解决方案 »
- 关于smarty模版引擎互用的一点问题
- 一次点击多个操作问题
- 请教如何删除过期的session文件?
- 继续考研 VS 做PHP程序员?
- 还是乱码问题,插入Mysql数据库的数据输出到页面没事,但是在数据库里看就是乱码
- swfupload的问题,上传后开辟了新的session
- 接受SOCKET数据的问题
- 关于mysql_unbuffered_query
- PHP配置问题,请高手指点,急急
- 应该是个HTML语法问题,怎么我指定了<td>的宽度,然而过长的字符串还是会把表格撑开?怎么在单元格里自动折行呢?
- 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更是昨天才开始接触……