Menu
CoddyTech

Decode Ways

Büyük harflerden oluşan bir mesaj, A = 1, B = 2 ve bu şekilde Z = 26'ya kadar olan kodlarla rakamlara dönüştürüldü; kodlar aralarına ayraç konmadan art arda yazıldı. Elinde s rakam dizisi var. Bu diziyi oluşturmuş olabilecek farklı mesajların sayısını döndür.

Her harf, tek bir rakamdan veya yan yana duran iki rakamdan okunur ve hiçbir kod 0 ile başlamaz: 06, 6 değildir ve tek başına bir 0 harf değildir. Hiçbir okuma mümkün değilse 0 döndür.

Fonksiyon

numDecodings(s: string) → integer
sstring
çözülecek rakam dizisi
Döndürürinteger
s olarak kodlanan harf mesajlarının sayısı

Kısıtlar

  • 1 ≤ s.length ≤ 100
  • s yalnızca 0 ile 9 arasındaki rakamları içerir ve 0 ile başlayabilir.
  • s'nin her öneki ve her soneki 231'den az okumaya sahiptir; bu nedenle yanıt ve oluşturduğunuz her sayım, işaretli 32 bitlik bir tamsayıya sığar.

Örnekler

Girdi
s = "2611"
Çıktı
4
Açıklama
Dört okuma şunlardır: 2 6 1 1 (BFAA), 26 1 1 (ZAA), 2 6 11 (BFK) ve 26 11 (ZK). Ortadaki rakamlar hiçbir zaman eşleşmez, çünkü 61, 26'dan büyüktür.

lock iconGönderirken +25 gizli test

challenge icon

Ek soru

Ya s herhangi bir 1 ile 9 arasındaki rakamı temsil eden * karakterini de içerebiliyorsa ne olur? Okuma sayısını O(n) zamanda hesaplayıp, sonucu 10^9+7 modunda döndürebilir misin?

Kodu sıfırla
def numDecodings(s):
    # Kodu buraya yazın
Test durumları

Durum 1

Durum 2

Durum 3

Girdi

s = "2611"

Beklenen

4