题目描述
输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。
示例1
输入
[3,32,321]返回值
"321323"
思路
* 解题思路:
* 先将整型数组转换成String数组,然后将String数组排序,最后将排好序的字符串数组拼接出来。关键就是制定排序规则。
* 排序规则如下:
* 若ab > ba 则 a > b,
* 若ab < ba 则 a < b,
* 若ab = ba 则 a = b;
* 解释说明:
* 比如
"3"
<
"31"
但是
"331"
>
"313"
,所以要将二者拼接起来进行比较
代码
function PrintMinNumber(numbers)
{
// write code here
for(let i = 0 ; i < numbers.length ; i++){
for(let j = i+1 ; j < numbers.length ; j++){
let val1 =""+ numbers[i]+numbers[j];
let val2 =""+ numbers[j]+numbers[i];
if(val1 >val2){
[numbers[i] , numbers[j]] = [numbers[j] , numbers[i]];
}
}
}
let res =""
for(let value of numbers) {
res += value ;
}
return res ;
}
运行环境:Javascript_V8
运行时间:9ms
占用内存:5460KB