Explore diversas soluciones LeetCode en Python, C++, JavaScript, SQL y TypeScript. Ideal para preparación de entrevistas, aprendizaje y práctica de código en múltiples lenguajes de programación. Enlace de repositorio de Github
Se le proporciona una cadena s
y un numero entero k
Puede elegir cualquier carácter de la cadena y cambiarlo por cualquier otro carácter en mayúsculas del inglés. Puede realizar esta operación como máximo k
veces.
Devolver la longitud de la subcadena más larga que contiene la misma letra que puede obtener después de realizar las operaciones anteriores.
Ejemplo 1:
Aporte: s = "ABAB", k = 2 Producción: 4 Explicación: Reemplace las dos “A” por dos “B” o viceversa.
Ejemplo 2:
Aporte: s = "AABABBA", k = 1 Producción: 4 Explicación: Reemplace la "A" del medio por "B" y forme "AABBBBA". La subcadena "BBBB" tiene las letras repetidas más largas, que son 4. También pueden existir otras formas de lograr esta respuesta.
Restricciones:
1 <= longitud s. <= 10 5
s
Consta únicamente de letras mayúsculas en inglés.0 <= k <= s.longitud
Pitón
Complejidad de tiempo #: O(n) Complejidad de espacio #: O(1) de colecciones importar clase defaultdict Solución: def characterReplacement(self, s: str, k: int) -> int: result = 0 left = right = 0 freq = defaultdict(int) mostFreqChar = 0 para derecha en rango(len(s)): freq[s[derecha]] += 1 mostFreqChar = max(mostFreqChar, freq[s[derecha]]) si derecha - izquierda + 1 - mostFreqChar > k: freq[s[izquierda]] -= 1 izquierda += 1 resultado = max(resultado, derecha - izquierda + 1) devolver resultado s = "AABABBA" k = 1 print(Solution().characterReplacement(s, k ))