Menu
CoddyTech

Decode Ways

Un message composé de lettres majuscules a été converti en chiffres à l’aide du code A = 1, B = 2, et ainsi de suite jusqu’à Z = 26, puis les codes ont été écrits les uns à la suite des autres sans séparateurs. Vous obtenez la chaîne de chiffres s. Retournez le nombre de messages différents qui auraient pu la produire.

Chaque lettre est lue à partir d’un chiffre ou de deux chiffres côte à côte, et un code ne commence jamais par 0 : 06 ne vaut pas 6, et un 0 seul ne correspond à aucune lettre. Si aucune lecture ne fonctionne, retournez 0.

Fonction

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

Contraintes

  • 1 ≤ s.length ≤ 100
  • s contient uniquement les chiffres 0 à 9, et peut commencer par 0.
  • Tous les préfixes et tous les suffixes de s ont moins de 231 lectures, donc la réponse et tous les nombres que tu calcules 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 s’associent jamais, car 61 est supérieur à 26.

lock icon+25 tests cachés à la soumission

challenge icon

Pour aller plus loin

Et si s pouvait également contenir *, qui représente n’importe quel chiffre de 1 à 9 ? Peux-tu compter les lectures en temps O(n), en renvoyant le nombre modulo 10^9+7 ?

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

Cas 1

Cas 2

Cas 3

Entrée

s = "2611"

Attendu

4