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 <= 100
s
contiene 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))