Menu
CoddyTech

Decode Ways

Un mensaje compuesto por letras mayúsculas se convirtió en dígitos mediante el código A = 1, B = 2 y así sucesivamente hasta Z = 26, y los códigos se escribieron uno tras otro sin separadores. Recibes la cadena de dígitos s. Devuelve cuántos mensajes diferentes podrían haberla producido.

Cada letra se lee a partir de uno o dos dígitos consecutivos, y un código nunca empieza con 0: 06 no es 6, y un 0 por sí solo no es una letra. Si no hay ninguna lectura posible, devuelve 0.

Función

numDecodings(s: string) → integer
sstring
la cadena de dígitos que se debe decodificar
Devuelveinteger
el número de mensajes de una letra que codifican s

Restricciones

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

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.

lock icon+25 pruebas ocultas al enviar

challenge icon

Para ir más allá

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

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

Caso 1

Caso 2

Caso 3

Entrada

s = "2611"

Esperado

4