排列正整数数组以形成最大的数字字符串

时间:2018-07-05 10:17:53

标签: php algorithm

有人可以帮我参加我的大学考试吗?我尝试搜索,但是我是php的新手,我还在学习

这就是我想要的,能否给我一些想法或功能,以便我可以排列正整数数组来形成最大的数字字符串?

例如:

$arrnew = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

assert(getLargestNumStr($arrnew) == 98765432110, 'Basic test 9-8-7-6-5-4-3-2-1-10');

希望你能帮助我。

4 个答案:

答案 0 :(得分:1)

这是一个很好的问题,可以通过以下观察方法解决:

  • 让我们考虑数组xy中的两个元素,因此假设对于通过附加这两个元素而创建的两个数字:xy > yx =>在最终结果中,{{ 1}}将始终位于x的前面,否则,我们可以通过在结果中交换yx的位置来轻松创建更大的数字。

=>比较两个数字yx时,我们可以根据此观察结果简单地创建自定义排序。

答案 1 :(得分:0)

尝试使用诸如arsort()之类的降序对数组进行排序,并将Array-elements隐含为字符串。这应该为您提供尽可能多的号码。

答案 2 :(得分:0)

如果可以解决您的问题,请尝试以下代码...

$array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
$text='';
foreach($array as $arr){
    $text.=$arr;
}

$string = str_split($text, "1"); 
$new_text = implode(",", $string); 
$output=explode(",",$new_text); 

rsort($output);
$final = '';
foreach($output as $out){
    $final.=$out;   
}   

echo $final;

答案 3 :(得分:0)

尝试一下

$arrnew = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
arsort($arrnew);
$str = str_replace(',','',join(',',$arrnew));
$arr1 = str_split($str);
arsort($arr1);
print_r($arr1);
echo implode('',$arr1);

Demo