Menu
CoddyTech

Decode Ways

Un messaggio composto da lettere maiuscole è stato codificato con A = 1, B = 2 e così via fino a Z = 26, e i codici sono stati scritti senza separatori. Data la stringa di cifre s, restituisci il numero di messaggi che potrebbero averla generata.

Una lettera si legge da una cifra oppure da due cifre adiacenti, e un codice non inizia mai con 0: 06 non è 6 e uno 0 isolato non è una lettera. Se nessuna lettura è valida, 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.
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), modulo 10^9+7?

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

Test #1

Test #2

Test #3

Argomento

s = "2611"

Output atteso

4