Dada una lista de números enteros no negativos, organícelos de manera que formen el número más grande.
Por ejemplo, dado [3, 30, 34, 5, 9], el número formado más grande es 9534330. (Nota: el resultado puede ser muy grande, por lo que debe devolver una cadena en lugar de un número entero).
Análisis
Este problema se puede resolver ordenando cadenas, no ordenando enteros. Defina un comparador para comparar cadenas por concat () de derecha a izquierda o de izquierda a derecha.
Solución Java
public String largestNumber(int[] nums) { String[] arr = new String[nums.length]; for(int i=0; i<nums.length; i++){ arr[i]=String.valueOf(nums[i]); } Arrays.sort(arr, new Comparator<String>(){ public int compare(String a, String b){ return (b+a).compareTo(a+b); } }); StringBuilder sb = new StringBuilder(); for(String s: arr){ sb.append(s); } while(sb.charAt(0)=='0'&&sb.length()>1) sb.deleteCharAt(0); return sb.toString(); } |