Menu
CoddyTech

Decode Ways

בינוניתכנון דינמיpython iconjava iconcpp iconc iconjs icon+10

הודעה באותיות גדולות הומרה לספרות באמצעות הקוד A = 1, B = 2 וכן הלאה עד Z = 26, והקודים נכתבו בזה אחר זה ללא מפרידים. נתונה לך מחרוזת הספרות s. החזר את מספר ההודעות השונות שיכלו ליצור אותה.

כל אות נקראת מספרה אחת או משתי ספרות סמוכות, וקוד לעולם אינו מתחיל ב־0: 06 אינו 6, ו־0 בפני עצמו אינו אות. אם שום קריאה אינה אפשרית, החזר 0.

פונקציה

numDecodings(s: string) → integer
sstring
מחרוזת הספרות לפענוח
מחזירהinteger
מספר הודעות האותיות שמקודדות ל־s

אילוצים

  • 1 ≤ s.length ≤ 100
  • s מכילה רק את הספרות 0 עד 9, והיא עשויה להתחיל ב־0.
  • לכל תחילית ולכל סופית של s יש פחות מ־231 קריאות, ולכן התשובה וכל ספירה שתבנו בדרך נכנסות למספר שלם חתום בן 32 סיביות.

דוגמאות

קלט
s = "2611"
פלט
4
הסבר
ארבע הקריאות הן 2 6 1 1 (BFAA), 26 1 1 (ZAA), 2 6 11 (BFK) ו-26 11 (ZK). הספרות האמצעיות לעולם אינן מתחברות לזוג, כי 61 גדול מ-26.

lock icon+25 בדיקות נסתרות בשליחה

challenge icon

שאלת המשך

מה אם s יכול להכיל גם *, שמייצג כל ספרה מ־1 עד 9? האם תוכל לספור את הקריאות בזמן O(n), ולהחזיר את הספירה מודולו 10^9+7?

איפוס הקוד
def numDecodings(s):
    # כתבו כאן את הקוד
מקרי בדיקה

מקרה 1

מקרה 2

מקרה 3

קלט

s = "2611"

צפוי

4