Menu
CoddyTech

Roman to Integer

Số La Mã dùng bảy ký hiệu: I = 1, V = 5, X = 10, L = 50, C = 100, D = 500 và M = 1000. Các ký hiệu được viết theo thứ tự từ lớn nhất đến nhỏ nhất rồi cộng lại, ngoại trừ sáu cặp trừ, trong đó ký hiệu nhỏ hơn đứng trước và được trừ khỏi ký hiệu lớn hơn: IV = 4, IX = 9, XL = 40, XC = 90, CD = 400 và CM = 900.

Bạn nhận được một số La Mã hợp lệ s. Hãy trả về số nguyên mà số đó biểu thị.

Hàm

romanToInt(s: string) → integer
sstring
một chữ số La Mã hợp lệ viết bằng chữ in hoa
Trả vềinteger
giá trị của chữ số, từ 1 đến 3999

Ràng buộc

  • 1 ≤ s.length ≤ 15
  • s chỉ chứa các ký tự I, V, X, L, C, D và M.
  • s là một chữ số La Mã hợp lệ biểu thị giá trị từ 1 đến 3999.

Ví dụ

Đầu vào
s = "XXVII"
Đầu ra
27
Giải thích
XX là 10 + 10, V là 5 và II là 1 + 1, vì vậy tổng là 27. Không có ký hiệu nào đứng trước một ký hiệu lớn hơn, nên mọi ký hiệu đều được cộng lại.
challenge icon

Câu hỏi mở rộng

Bạn có thể viết hàm ngược lại, chuyển một số nguyên từ 1 đến 3999 thành số La Mã không?

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

Kiểm thử #1

Kiểm thử #2

Kiểm thử #3

Đối số

s = "XXVII"

Đầu ra mong đợi

27