Menu
CoddyTech

Decode Ways

Trung bìnhQuy hoạch độngpython iconjava iconcpp iconc iconjs icon+10

Một thông điệp gồm các chữ cái viết hoa được mã hóa bằng A = 1, B = 2 và cứ thế đến Z = 26, rồi các mã được viết liền nhau, không có dấu phân cách. Với chuỗi chữ số s, hãy trả về số thông điệp có thể tạo ra chuỗi đó.

Một chữ cái được đọc từ một chữ số hoặc hai chữ số liền kề, và mã không bao giờ bắt đầu bằng 0: 06 không phải là 6, còn một chữ số 0 đứng riêng không phải là chữ cái. Nếu không có cách đọc nào phù hợp, hãy trả về 0.

Hàm

numDecodings(s: string) → integer
sstring
chuỗi chữ số cần giải mã
Trả vềinteger
số lượng thông điệp chữ cái được mã hóa thành s

Ràng buộc

  • 1 ≤ s.length ≤ 100
  • s chỉ chứa các chữ số từ 0 đến 9 và có thể bắt đầu bằng 0.
  • Mọi tiền tố và hậu tố của s đều có ít hơn 231 cách đọc, vì vậy đáp án và mọi số đếm bạn tính trong quá trình này đều nằm trong phạm vi số nguyên có dấu 32 bit.

Ví dụ

Đầu vào
s = "2611"
Đầu ra
4
Giải thích
Bốn cách đọc là 2 6 1 1 (BFAA), 26 1 1 (ZAA), 2 6 11 (BFK) và 26 11 (ZK). Hai chữ số ở giữa không bao giờ ghép thành một cặp, vì 61 lớn hơn 26.
challenge icon

Câu hỏi mở rộng

Nếu s cũng có thể chứa *, đại diện cho bất kỳ chữ số nào từ 1 đến 9, thì sao? Bạn có thể đếm số cách đọc trong thời gian O(n), lấy phần dư theo 10^9+7 không?

Đặt lại code
def numDecodings(s):
    # Viết code tại đây

Kiểm thử #1

Kiểm thử #2

Kiểm thử #3

Đối số

s = "2611"

Đầu ra mong đợi

4