因爲我不確定如何改進這一點,所以我想回顧一下這些思想過程。我有一個由逗號分隔的字符串,他們有重複出現的子字符串,我想找到3個最出現的子字符串。在PHP中查找字符串中發生的3個子字符串
- 我打算用逗號將字符串分解爲數組。
- 在原始字符串中爲數組中的每個元素執行substr_count並將其存儲在單獨的數組中以存儲計數? (不知道如何改進這個,因爲這會爲同一子字符串創建重複計數)
- 在數組上執行一個最大值來查找第一個,第二個和第三個最出現的子字符串。
- 返回一個數組,其中第一個,第二個和第三個出現的子字符串。
我猜我執行爆炸後,我可以做一個快速排序,並從那裏?
這是我到目前爲止已經試過:
$result = findThreeMostOccuringStrings("apple, apple, berry, cherry, cherry, cherry, dog, dog, dog");
var_dump($result);
function findThreeMostOccuringStrings($str){
$first = PHP_INT_MIN;
$second = PHP_INT_MIN;
$third = PHP_INT_MIN;
$arr = explode(",", $str);
for ($i = 0; $i < count($str); $i++){
$arrIdx[] = substr_count($arr[$i]);
}
$first = max($arrIdx);
$arrIdx[$first] = -1;
$second = max($arrIdx);
$arrIdx[$first] = -1;
$third = max($arrIdx);
$arrIdx[$first] = -1;
$threeMostOccuringStrings = array($first, $second, $third);
return $threeMostOccuringStrings;
}
如果你添加你已經試過的代碼會更好。 – Sujay
你能解釋一下你對「子串」的看法嗎?如果我們有一個輸入字符串「cat,dog,cow」,那麼字符串「t,d」就是一個子字符串。術語「貓」,「狗」和「牛」在技術上是子串,但如果這就是你的意思,那麼你真正的意思是「這個字符串代表一個逗號分開的術語列表」,所以'首先爆炸()'字符串,那麼談談數組中的單個元素? –
@Mike'Pomax'Kamermans,通過子串我的意思是在字符串中被逗號分隔的字符串被傳遞給函數。 – imparante