比如有如下的字符串:
$str = "cpucpucpucpucpucpucpucpucpcupcpu";
$str1="lovelovelovelovelovelovelovelovelovehellohellohellohellohahaha";
想要得到的结果是:
$str中出现次数最多的子字符串是 cpu。 $str1中出现次数最多的字符串是 love和hello。
大家帮忙给指导指导。
4 回答
莫回无
TA贡献1865条经验 获得超7个赞
$len = strlen($str);
$flag['num'] = 0;
$flag['str'] = '';
$flag['len'] = 0;
for($i = 0; $i < $len-1; $i++){
for ($j = 2; $j < $len - 1 - $i; $j++) {
$tar = substr($str, $i, $j);
$count = substr_count($str, $tar);
if($count >= $flag['num']){
$flag['num'] = $count;
$flag['str'] = $tar;
}
}
}
var_dump($flag);
$str 中重复最多的显然是 cp
函数式编程
TA贡献1807条经验 获得超9个赞
个人觉得,如果仅仅是给出一个连续的字符串,也没有明确说明统计什么单词出现的次数,这种情况下:
- 首先得有一个中英文字词大全
- 一个个进行组合,比如第一个字符和第二个字符进行组合,在字词大全中查找是否有这么个字或词!如果有,统计他出现的次数,第一个和第三个进行组合...直到第一个和第 n 个 .....,这是两个字符进行组合,接下去是三个字符进行组合 ... 等第。等第一个字符所有可能性组合完成,第二个字符以此类推。
- 最后对统计得出的结果进行排序,返回出现次数最高的字或词
个人觉得单第一个条件就难以满足....,所以,这种想法不太可能实现!
如果你给出一个有明确分隔符字符串,比如有空格的,那还好。或者说给出一个任意字符串(连续都无所谓),但是你很明确知道要统计其中什么字、词的数量,比较得出频率最高的结果,那都很好实现 ....
湖上湖
TA贡献2003条经验 获得超2个赞
有个疑问,出现最多的字符串是已经给定的几个来判别,还是说该字符串中所有子串,然后取查其最多的?
- 如果是给定的一组字符串(字典),只需要使用
substr_count()
来统计 - 如果是所有子串的情况,就需要计算出该字符串的所有子串(非空),如
cpucpucpucpucpucpucpucpucpcupcpu
中的c
,p
与u
也属于最多的
- 4 回答
- 0 关注
- 846 浏览
添加回答
举报
0/150
提交
取消