输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。
function index(){
$array = array(321, 3, 342);
$len = count($array);
for ($i = 1; $i < $len; $i++) {
for ($k = 0; $k < $len - $i; $k++) {
if ($this->compare($array[$k], $array[$k + 1])) {
$tmp = $array[$k + 1];
$array[$k + 1] = $array[$k];
$array[$k] = $tmp;
}
}
}
$str = "";
print_r($array);
foreach($array as $value){
$str .= $value;
}
echo $str;
}
输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字的最大的一个
function index2(){
$res = array('321','32','3');
$a1 = $a2 = $a3 = array();
$zh1 = $zh2 = $zh3 = array();
for($i=0;$i<count($res);$i++)
{
$a1 = array(strval($res[$i]));
array_push($zh1, $a1);//每循环一次,压入一个组合
for($j=0;$j<count($res);$j++)
{
if($i == $j){
continue;
}
$a2 = empty($a2)?array_pop($zh1):$a2;
$tmp2 = $a2;
array_push($a2, strval($res[$j]));
array_push($zh2, $a2);
$a2 = $tmp2;
unset($tmp2);
for($k=0;$k<count($res);$k++)
{
if($i == $k || $j == $k){
continue;
}
$a3 = empty($a3)?array_pop($zh2):$a3;
$tmp3 = $a3;
array_push($a3, strval($res[$k]));
array_push($zh3, $a3);
$a3 = $tmp3;
unset($tmp3);
}
$a3 = array();//清空a3值,进入下一次组合循环
}
$a2 = array();//清空a2值,进入下一次组合循环
}
$zh = $zh3;
$str_list=[];
foreach ($zh as $v){
$str_list[] = implode('', $v);
}
sort($str_list);
echo array_pop($str_list);
}