Retos de Algoritmos: Dos Apuntadores y Subcadenas
Clase 24 de 35 • Curso de Algoritmos Avanzados: Patrones de Arrays y Strings
Al igual que en el módulo anterior de dos apuntadores, ahora vamos a poner en práctica todo lo que hemos aprendido durante este módulo con algunos retos. ¡Empecemos! Espero tus soluciones en los aportes. 😄
1. Máxima Cantidad de 1s Consecutivos
Dado un arreglo de valores binarios y un entero k
, encuentra el máximo número de 1s consecutivos. Puedes cambiar k
0s por el valor 1.
Ejemplo 1:
# Entrada: nums = [1,1,1,0,0,0,1,1,1,0], k = 2 # Salida: 6
Explicación: [1,1,1,0,0,++1,1,1,1,1,1++] Los números en negrita se han pasado de 0 a 1. La submatriz más larga está subrayada.
Ejemplo 2:
# Entrada: nums = [0,0,1,1,0,0,1,1,0,1,1,0,0,1,1,1], k = 3 # Salida: 10
Explicación: [0,0,++1,1,1,1,1,1,1,1,1,1++,0,0,0,1,1,1,1] Los números en negrita fueron volteados de 0 a 1. El sub-arreglo más largo está subrayado.
2. Subcadena más larga sin caracteres repetidos
Dada una cadena de caracteres, encuentra la longitud de la subcadena más larga sin repetir caracteres.
Ejemplo 1:
# Entrada: s = "abcabcbb" # Salida: 3
Explicación: La respuesta es "abc", con la longitud de 3.
Ejemplo 2:
# Entrada: s = "bbbbb" # Salida: 1
Explicación: La respuesta es "b", con la longitud de 1.
3. Subcadena más larga (reemplazo de k
caracteres)
Dada una cadena s
y un número entero k
. Devuelve la longitud de la subcadena más larga que contenga la misma letra de forma consecutiva. Donde puedes cambiar k
caracteres de la cadena por otro caracter.
Ejemplo 1:
# Entrada: s = "ABAB", k = 2 # Salida: 4
Explicación: Sustituir las dos "A" por dos "B" o viceversa.
Ejemplo 2:
# Entrada: s = "AABABBA", k = 1 # Salida: 4
Explicación: Se sustituye la 'A' del medio por la 'B' y se forma "AABBBBA". La subcadena "BBBB" tiene las letras repetidas más largas, que son 4.
4. Encontrar todos los anagramas de una cadena
Dadas dos cadenas s
y p
, devuelva un arreglo con todos los índices de inicio de los anagramas de p
en s
. Puede devolver la respuesta en cualquier orden.
Un anagrama es una palabra o frase que se forma reordenando las letras de otra palabra o frase, normalmente utilizando todas las letras originales exactamente una vez.
Ejemplo 1:
# Entrada: s = "cbaebabacd", p = "abc" # Salida: [0,6]
Explicación: La subcadena con índice inicial = 0 es "cba", que es un anagrama de "abc". La subcadena con índice inicial = 6 es "bac", que es un anagrama de "abc".
Ejemplo 2:
# Entrada: s = "abab", p = "ab" # Salida: [0,1,2]
Explicación: La subcadena con índice inicial = 0 es "ab", que es un anagrama de "ab". La subcadena con índice inicial = 1 es "ba", que es un anagrama de "ab". La subcadena con índice inicial = 2 es "ab", que es un anagrama de "ab".