Categorías
Algorithms Interview Java

LeetCode – Número más grande (Java)

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();
}

  LeetCode - Simplificar ruta (Java)

Por Programación.Click

Más de 20 años programando en diferentes lenguajes de programación. Apasionado del code clean y el terminar lo que se empieza. ¿Programamos de verdad?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *