Menu
CoddyTech

Decode Ways

Eine Nachricht aus Großbuchstaben wurde mit A = 1, B = 2 und so weiter bis Z = 26 codiert, und die Codes wurden ohne Trennzeichen geschrieben. Gegeben sei die Ziffernfolge s. Gib zurück, wie viele Nachrichten sie erzeugt haben könnten.

Ein Buchstabe wird aus einer einzelnen Ziffer oder zwei benachbarten Ziffern gelesen, und ein Code beginnt nie mit 0: 06 ist nicht 6, und eine einzelne 0 ist kein Buchstabe. Wenn keine Lesart funktioniert, gib 0 zurück.

Funktion

numDecodings(s: string) → integer
sstring
die Ziffernfolge zum Dekodieren
Gibt zurückinteger
die Anzahl der Buchstaben-Nachrichten, die zu s codieren

Einschränkungen

  • 1 ≤ s.length ≤ 100
  • s enthält nur die Ziffern 0 bis 9 und kann mit 0 beginnen.
  • Jedes Präfix und jedes Suffix von s hat weniger als 231 Lesarten, daher passen die Antwort und alle Zählwerte, die du unterwegs ermittelst, in eine vorzeichenbehaftete 32-Bit-Ganzzahl.

Beispiele

Eingabe
s = "2611"
Ausgabe
4
Erklärung
Die vier Lesarten sind 2 6 1 1 (BFAA), 26 1 1 (ZAA), 2 6 11 (BFK) und 26 11 (ZK). Die mittleren Ziffern bilden nie ein Paar, weil 61 größer als 26 ist.
challenge icon

Weiterführende Frage

Was ist, wenn s auch * enthalten kann, das für eine beliebige Ziffer von 1 bis 9 steht? Kannst du die Anzahl der Lesarten in O(n) Zeit modulo 10^9+7 zählen?

Code zurücksetzen
def numDecodings(s):
    # Schreibe hier den Code

Test #1

Test #2

Test #3

Argument

s = "2611"

Erwartete Ausgabe

4