Menu
CoddyTech

Decode Ways

Un mensaje de letras mayúsculas se codificó con A = 1, B = 2 y así sucesivamente hasta Z = 26, y los códigos se escribieron sin separadores. Dada la cadena de dígitos s, devuelve cuántos mensajes podrían haberla producido.

Una letra se lee a partir de uno o dos dígitos adyacentes, y un código nunca empieza por 0: 06 no es 6, y un 0 aislado no es una letra. Si ninguna lectura funciona, devuelve 0.

Función

numDecodings(s: string) → integer
sstring
la cadena de dígitos que se va a decodificar
Devuelveinteger
el número de mensajes de letras que se codifican en s

Restricciones

  • 1 ≤ s.length ≤ 100
  • s contiene solo los dígitos 0 a 9, y puede empezar con 0.
  • Cada prefijo y cada sufijo de s tiene menos de 231 lecturas, así que la respuesta y cada recuento que calcules por el camino caben en un entero de 32 bits con signo.

Ejemplos

Entrada
s = "2611"
Salida
4
Explicación
Las cuatro lecturas son 2 6 1 1 (BFAA), 26 1 1 (ZAA), 2 6 11 (BFK) y 26 11 (ZK). Los dígitos del medio nunca se emparejan, porque 61 es mayor que 26.
challenge icon

Para ir más allá

¿Qué pasa si s también puede contener *, que representa cualquier dígito del 1 al 9? ¿Puedes contar las lecturas en tiempo O(n), módulo 10^9+7?

Restablecer código
def numDecodings(s):
    # Escribe el código aquí

Prueba #1

Prueba #2

Prueba #3

Argumento

s = "2611"

Salida Esperada

4