Menu
CoddyTech

Decode Ways

Büyük harflerden oluşan bir mesaj A = 1, B = 2 ve böyle devam ederek Z = 26 olacak şekilde kodlandı ve kodlar aralarına ayraç konmadan yazıldı. s rakam dizisi verildiğinde, bu diziyi oluşturmuş olabilecek mesajların sayısını döndür.

Bir harf tek bir rakamdan veya yan yana gelen iki rakamdan okunur ve bir kod 0 ile başlamaz: 06, 6 değildir ve tek başına duran 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'ye 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.
  • Her öneğin ve her soneğin s için 231'den az yorumlanma biçimi vardır; dolayısıyla yanıt ve işlem sırasında hesapladığın tüm sayılar işaretli 32 bitlik bir tam sayıya sığar.

Örnekler

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

Ek soru

Peki ya s herhangi bir 1 ile 9 arasındaki rakamı temsil eden * karakterini de içerebilirse? Okuma sayısını O(n) zamanda, 10^9+7 modunda hesaplayabilir misin?

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

Test #1

Test #2

Test #3

Argüman

s = "2611"

Beklenen Çıktı

4