Menu
CoddyTech

Decode Ways

Un message composé de lettres majuscules a été encodé avec A = 1, B = 2, et ainsi de suite jusqu’à Z = 26, puis les codes ont été écrits sans séparateurs. Étant donné la chaîne de chiffres s, renvoie le nombre de messages qui auraient pu la produire.

Une lettre se lit à partir d’un chiffre ou de deux chiffres adjacents, et un code ne commence jamais par 0 : 06 ne vaut pas 6, et un 0 isolé ne correspond à aucune lettre. Si aucune lecture ne fonctionne, renvoie 0.

Fonction

numDecodings(s: string) → integer
sstring
la chaîne de chiffres à décoder
Renvoieinteger
le nombre de messages constitués de lettres qui s’encodent en s

Contraintes

  • 1 ≤ s.length ≤ 100
  • s ne contient que les chiffres 0 à 9, et peut commencer par 0.
  • Chaque préfixe et chaque suffixe de s possède moins de 231 décodages, donc la réponse et tous les comptes calculés en cours de route tiennent dans un entier signé de 32 bits.

Exemples

Entrée
s = "2611"
Sortie
4
Explication
Les quatre lectures sont 2 6 1 1 (BFAA), 26 1 1 (ZAA), 2 6 11 (BFK) et 26 11 (ZK). Les chiffres du milieu ne se regroupent jamais par paires, car 61 est supérieur à 26.
challenge icon

Pour aller plus loin

Et si s pouvait aussi contenir *, qui représente n’importe quel chiffre de 1 à 9 ? Peux-tu compter les interprétations en O(n), modulo 10^9+7 ?

Réinitialiser le code
def numDecodings(s):
    # Écrivez le code ici

Test #1

Test #2

Test #3

Argument

s = "2611"

Résultat attendu

4