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
Un mensaje que contiene cartas de Arizona puede ser codificado en números usando el siguiente mapeo:
'A' -> "1" 'B' -> "2" ... 'Z' -> "26"
A descodificar En un mensaje codificado, todos los dígitos deben agruparse y luego volver a asignarse en letras utilizando el método inverso al de la asignación anterior (puede haber varias formas). "11106" se puede mapear en:
"AAJF"con la agrupación(1 1 10 6)"KJF"con la agrupación(11 10 6)
Tenga en cuenta que la agrupación (1 11 06) es inválido porque "06" no se puede mapear en 'F' desde "6" es diferente de "06".
dada una cuerda s que contiene sólo dígitos, volver el número de maneras de descodificar él.
Los casos de prueba se generan para que la respuesta encaje en un 32 bits entero.
Ejemplo 1:
Aporte: s = "12" Producción: 2 Explicación: "12" podría decodificarse como "AB" (1 2) o "L" (12).
Ejemplo 2:
Aporte: s = "226" Producción: 3 Explicación: "226" podría decodificarse como "BZ" (2 26), "VF" (22 6) o "BBF" (2 2 6).
Ejemplo 3:
Aporte: s = "06"
Producción: 0
Explicación: "06" no se puede asignar a "F" debido al cero inicial ("6" es diferente de "06").
Restricciones:
1 <= s.longitud <= 100scontiene sólo dígitos y puede contener ceros a la izquierda.
Pitón
Complejidad de tiempo de #: O(n) Complejidad de espacio de #: O(n) de functools import clase lru_cache Solución: @lru_cache(None) def recursiveWithMemo(self, index: int, s: str) -> int: if index == len (s): devuelve 1 si s[índice] == '0': devuelve 0 si índice == len(s) - 1: devuelve 1 respuesta = self.recursiveWithMemo(índice + 1, s) si int(s[índice : índice + 2]) <= 26: respuesta += self.recursiveWithMemo(index + 2, s) return respuesta def numDecodings(self, s: str) -> int: return self.recursiveWithMemo(0, s) s = " Impresión de 12"(Solución().numDecodificaciones(s))
