题目描述:
给出一个整数数组,求数组中所有数字可以拼接出的最大整数。
例如:
输入:[7,53, 54]
, 输出: 75453
;
输入:[1,321,35,4]
, 输出:4353213
;
代码实现
思路:
- 将数组中所有数字转为字符串,按照首字母大小进行整体排序。
- 如果首字母相同,就通过
while
循环向后比较,比如52和53比较时,首字母5相同就比较2和3,如果相比较的两个字符串长度不一样,先被循环完的字符串将始终用最后一位字母进行后续比较,比如523和52进行比较时,前两位相同,523的3就和52中的最后一位2就行比较,以此类推。
function toInt(arr) {
let newArr = arr.sort((a,b) => {
a+='';
b+='';
let aLen = a.length, bLen = b.length;
let aIndex = 0, bIndex = 0;
while(aIndex<=aLen && bIndex<bLen) {
if(arr[aIndex]===arr[bIndex]) {
aIndex + 1 < aLen && (aIndex++, flag=true);
bIndex + 1 < bLen && (bIndex++, flag = true);
} else {
break
}
if(flag) break;
}
if(arr[aIndex]>arr[bIndex]) {
return -1;
} else {
return 1;
}
})
return newArr.join('')
}