因为我不确定如何改进这一点,所以我想回顾一下这些思想过程。我有一个由逗号分隔的字符串,他们有重复出现的子字符串,我想找到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