Solución

@allaeghayat_373077fa·hace 2dTypeScript
solution.tsTypeScript
import java.util.Map;
import java.util.HashMap;
import java.util.List;
import java.util.ArrayList;
import java.util.Collections;
import java.util.stream.Collectors;

public class Solution {
    public String convertToBase(int num, int base) {
        Map<Integer, String> bases = new HashMap<>();
        
        // Rellenamos el mapa del 10 al 35
        for (int i = 10; i <= 35; i++) {
            char letra = (char) ('a' + (i - 10));
            bases.put(i, String.valueOf(letra));
        }

        if (num == 0) {
            return "0";
        }
        
        int cociente = num;
        List<String> conversion = new ArrayList<>();
        
        // Cambiado a > 0 para capturar todos los dígitos
        while (cociente > 0) {
            int resto = cociente % base;
            cociente = cociente / base;
            conversion.add(getConversion(resto, bases));
        }
        
        // 1. Invertimos la lista correctamente (es void)
        Collections.reverse(conversion);
        
        // 2. Aplicamos el stream sobre la lista ya invertida
        return conversion.stream()
                         .map(String::valueOf)
                         .collect(Collectors.joining());
    }

    public String getConversion(int resto, Map<Integer, String> base){
        if (resto <= 9)
            return String.valueOf(resto);
        else
            return base.get(resto);
    }
}
0respuestas
Respuestas

Aún no hay respuestas

¡Sé el primero en responder!

Escribir un comentario

Recuerda ser amable. Estás comentando la solución de otra persona. Comparte tu perspectiva de forma constructiva y respetuosa.

Debes iniciar sesión para publicar un comentario.