给出一个整数数组,求数组中所有数字可以拼接出的最大整数

题目描述:

给出一个整数数组,求数组中所有数字可以拼接出的最大整数。
例如:
输入:[7,53, 54], 输出: 75453;
输入:[1,321,35,4], 输出:4353213;

代码实现

思路:

  1. 将数组中所有数字转为字符串,按照首字母大小进行整体排序。
  2. 如果首字母相同,就通过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('')
}

猜你喜欢

转载自blog.csdn.net/weixin_44761091/article/details/123985575