Tema Descripción:
Dada una matriz de enteros, encuentre el entero más grande que se puede concatenar de todos los números de la matriz.
Por ejemplo:
entrada: [7,53, 54]
, salida: 75453
;
entrada: [1,321,35,4]
, salida: 4353213
;
Código
Ideas:
- Convierte todos los números de la matriz en cadenas y los ordena como un todo según el tamaño de la primera letra.
- Si las primeras letras son iguales,
while
compare hacia atrás a través del bucle. Por ejemplo, cuando se comparan 52 y 53, si la primera letra 5 es la misma, compare 2 y 3. Si las longitudes de las dos cadenas que se van a comparar son diferentes Por ejemplo, cuando se comparan 523 y 52, los primeros dos dígitos son iguales y el 3 de 523 se compara con los últimos 2 de 52, la cadena que se cicla primero siempre será Use la última letra para la comparación posterior. y así.
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('')
}