Menu
CoddyTech

Decode Ways

Un messaggio composto da lettere maiuscole è stato convertito in cifre con il codice A = 1, B = 2 e così via fino a Z = 26, e i codici sono stati scritti uno dopo l’altro senza separatori. Hai la stringa di cifre s. Restituisci il numero di messaggi diversi che potrebbero averla generata.

Ogni lettera si legge da una cifra o da due cifre adiacenti, e un codice non inizia mai con 0: 06 non è 6 e uno 0 da solo non è una lettera. Se nessuna lettura funziona, restituisci 0.

Funzione

numDecodings(s: string) → integer
sstring
la stringa di cifre da decodificare
Restituisceinteger
il numero di messaggi di lettere che codificano s

Vincoli

  • 1 ≤ s.length ≤ 100
  • s contiene solo le cifre da 0 a 9 e può iniziare con 0.
  • Ogni prefisso e ogni suffisso di s ha meno di 231 interpretazioni, quindi la risposta e ogni conteggio che calcoli lungo il percorso rientrano in un intero con segno a 32 bit.

Esempi

Input
s = "2611"
Output
4
Spiegazione
Le quattro letture sono 2 6 1 1 (BFAA), 26 1 1 (ZAA), 2 6 11 (BFK) e 26 11 (ZK). Le cifre centrali non si accoppiano mai, perché 61 è maggiore di 26.

lock icon+25 test nascosti all’invio

challenge icon

Per approfondire

E se s potesse contenere anche *, che rappresenta qualsiasi cifra da 1 a 9? Riesci a contare le letture in tempo O(n), restituendo il conteggio modulo 10^9+7?

Ripristina il codice
def numDecodings(s):
    # Scrivi il codice qui
Casi di test

Caso 1

Caso 2

Caso 3

Input

s = "2611"

Atteso

4