比如有如下的字符串:
$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 關注
- 883 瀏覽
添加回答
舉報
0/150
提交
取消