Menu
CoddyTech

Decode Ways

Eine Nachricht aus Großbuchstaben wurde mit dem Code A = 1, B = 2 usw. bis zu Z = 26 in Ziffern umgewandelt, und die Codes wurden ohne Trennzeichen hintereinander geschrieben. Du erhältst die Ziffernfolge s. Gib zurück, wie viele verschiedene Nachrichten daraus entstanden sein könnten.

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

Funktion

numDecodings(s: string) → integer
sstring
die zu dekodierende Ziffernfolge
Gibt zurückinteger
die Anzahl der Buchstabennachrichten, 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 jede Anzahl, die du unterwegs berechnest, 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.

lock icon+25 versteckte Tests beim Einreichen

challenge icon

Weiterführende Frage

Was wäre, wenn s auch * enthalten könnte, das für jede Ziffer von 1 bis 9 steht? Kannst du die Anzahl der Lesarten in O(n)-Zeit zählen und die Anzahl modulo 10^9+7 zurückgeben?

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

Fall 1

Fall 2

Fall 3

Eingabe

s = "2611"

Erwartet

4