Xử lý chuỗi
Mô tả
Nhân dịp trưng bày hiện vật mới, Bảo tàng Lịch sử Quốc gia đang tiến hành số hóa hàng loạt biển chỉ dẫn cổ có khắc số La Mã. Bạn là kỹ sư phần mềm được giao nhiệm vụ viết một hàm chuyển đổi nhỏ gọn: đọc một chuỗi ký tự La Mã hợp lệ và dịch nó thành số thập phân tương ứng. Số La Mã gồm bảy ký tự cơ bản với giá trị cố định: I (1), V (5), X (10), L (50), C (100), D (500), M (1000). Quy tắc cộng dồn rất đơn giản, nhưng có một ngoại lệ quan trọng: nếu một ký tự nhỏ hơn đứng ngay trước một ký tự lớn hơn thì ta phải lấy ký tự lớn trừ đi ký tự nhỏ (ví dụ IV là 4, IX là 9). Hãy giúp bảo tàng hoàn thiện cỗ máy dịch thuật này.
Đầu vào
- Một chuỗi
sgồm các ký tự hoa thuộc tập{I, V, X, L, C, D, M}.
Đầu ra
- Trả về một số nguyên dương là giá trị thập phân tương ứng với chuỗi La Mã đầu vào.
Ràng buộc
- Độ dài chuỗi
sthỏa mãn1 ≤ |s| ≤ 15. - Chuỗi
sluôn là một số La Mã hợp lệ biểu diễn số nguyên trong khoảng từ1đến3999.
Ví dụ
Ví dụ 1
- Đầu vào:
"III" - Đầu ra:
3 - Giải thích: Cả ba ký tự
Iđều bằng 1 và không có ký tự nào nhỏ hơn ký tự ngay sau nó, nên ta chỉ việc cộng dồn:1 + 1 + 1 = 3.
Ví dụ 2
- Đầu vào:
"MCMXCIV" - Đầu ra:
1994 - Giải thích: Ta duyệt từng cặp ký tự liền kề:
M(1000) ≥C(100): cộng 1000.C(100) <M(1000): trừ 100.M(1000) ≥X(10): cộng 1000.