Ejercicios Java: arrays, cadenas y colecciones10
Empieza por un cálculo y sigue cómo el problema cambia el estado que necesitas conservar. Cada ejercicio principal incluye una solución Java completa, sus condiciones de entrada y el razonamiento del algoritmo.
Arrays y límites numéricos
Aplica los signos y empareja los índices antes de elegir int o long. Continúa con una secuencia cuyos productos superan int.
- Sumar valores con signo en Java con IntStream
Combina valores absolutos con sus signos booleanos mediante IntStream. Comprueba la cancelación, las entradas todas negativas, los límites de int y el contrato de arrays de igual longitud.
- Producto escalar de arrays en Java: IntStream y límites de enteros
Multiplica los elementos correspondientes de dos arrays y súmalos con IntStream. Comprende los signos, los límites de int y por qué hay que ampliar los operandos antes del desbordamiento.
- Secuencia de paso x en Java: ampliar el tipo antes de multiplicar
Genera n valores de x a x*n con IntStream. Por qué mapToLong por sí solo no evita el desbordamiento de int; pasos positivos, negativos y nulos.
Cadenas y orden de las transformaciones
Usa sustitución literal para las palabras que representan dígitos, conserva el orden de normalización y después elimina pares de caracteres iguales adyacentes con una pila.
- Convertir palabras inglesas de dígitos con String.replace en Java
Normaliza mezclas válidas de dígitos y palabras de zero a nine con sustitución literal. Distingue replace de replaceAll y explica los límites enteros y el alcance.
- Recomendación de ID en Java: orden de normalización y truncamiento
Implementa la normalización con una cadena Optional y un bucle. Comprueba puntos consecutivos, vacío tras filtrar, limpieza tras truncar, relleno e independencia de la configuración regional.
- Eliminar pares iguales adyacentes en Java con una pila ArrayDeque
Reduce pares de caracteres iguales adyacentes con una pila. Invariante del prefijo, eliminación en cascada, límites de un millón de caracteres y costes de tiempo y espacio.
Recuentos, estado y orden
Distingue las frecuencias de nombres del número de tipos distintos. Después sigue el orden de uso reciente de la caché y clasifica proporciones con un criterio explícito de desempate.
- Encontrar al corredor que no termina en Java con frecuencias de nombres
Resta las frecuencias de quienes terminan de las de participantes con HashMap. Gestiona nombres repetidos sin diferencias de Set y explica la condición de un único corredor ausente.
- Java Ponketmon: por qué la respuesta es min(tipos distintos, N/2)
Cuenta tipos distintos con HashSet y demuestra que el límite de selección es alcanzable. Distingue el máximo de tipos de la construcción de una selección concreta.
- Caché LRU en Java: el orden de acceso de LinkedHashMap
Simula LRU con LinkedHashMap ordenado por acceso: actualización de aciertos, expulsión, claves sin distinguir mayúsculas, capacidad cero e hipótesis del coste.
- Ordenar tasas de fallo en Java: denominadores, empates y long
Cuenta jugadores detenidos y llegados, ordena tasas exactas con productos cruzados long y trata etapas no alcanzadas, finalización completa y desempates por número.